Aan de slagGa gratis aan de slag

Argumenten van functies corrigeren

De functie voor het harmonisch gemiddelde is bijna af. Je moet alleen nog wat controles toevoegen aan het argument na.rm. Deze keer ga je het, in plaats van fouten te geven wanneer de invoer een onjuiste vorm heeft, proberen te herstellen.

na.rm moet een logische vector met één element zijn (dus TRUE of FALSE).

Het pakket assertive is voor je geladen.

Deze oefening maakt deel uit van de cursus

Introductie tot functies schrijven in R

Cursus bekijken

Oefeninstructies

  • Werk calc_harmonic_mean() bij om het argument na.rm te corrigeren door use_first() te gebruiken om het eerste na.rm-element te kiezen, en coerce_to() om het om te zetten naar type logical.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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)
Code bewerken en uitvoeren