Aan de slagBegin gratis

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

Bekijk cursus

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.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan 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