Kom igångKom igång gratis

Rätta funktionsargument

Funktionen för harmoniskt medelvärde är nästan klar. Du behöver dock lägga till några kontroller av argumentet na.rm. Den här gången ska du inte kasta fel när indata har fel form – i stället ska du försöka rätta till det.

na.rm ska vara en logisk vektor med ett element (det vill säga TRUE eller FALSE).

Paketet assertive är redan inläst åt dig.

Den här övningen är en del av kursen

Introduktion till att skriva funktioner i R

Visa kurs

Övningsinstruktioner

  • Uppdatera calc_harmonic_mean() så att argumentet na.rm rättas till: använd use_first() för att välja det första elementet i na.rm, och coerce_to() för att konvertera det till logisk typ.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# Update the function definition to fix the na.rm argument
calc_harmonic_mean <- function(x, na.rm = FALSE) {
  assert_is_numeric(x)
  if(any(is_non_positive(x), na.rm = TRUE)) {
    stop("x contains non-positive values, so the harmonic mean makes no sense.")
  }
  # Use the first value of na.rm, and coerce to logical
  ___ <- ___(___(___), ___ = "___")
  x %>%
    get_reciprocal() %>%
    mean(na.rm = na.rm) %>%
    get_reciprocal()
}

# See what happens when you pass it malformed na.rm
calc_harmonic_mean(std_and_poor500$pe_ratio, na.rm = 1:5)
Redigera och kör kod