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
Oefeninstructies
- Werk
calc_harmonic_mean()bij om het argumentna.rmte corrigeren dooruse_first()te gebruiken om het eerstena.rm-element te kiezen, encoerce_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)