Aangepaste foutlogica
Soms geven de assert_*()-functies in assertive niet de meest informatieve foutmelding. Zo vertellen de controles die nagaan of een getal binnen een numeriek bereik valt wel dat een waarde buiten bereik is, maar niet waarom dat een probleem is. In dat geval kun je de is_*()-functies samen met berichten, waarschuwingen of fouten gebruiken om aangepaste feedback te definiëren.
Het harmonisch gemiddelde heeft alleen zin als x alleen positieve waarden bevat. (Probeer het harmonisch gemiddelde van één en min één te berekenen om te zien waarom.) Zorg dat je gebruikers dit weten!
Deze oefening maakt deel uit van de cursus
Introductie tot functies schrijven in R
Oefeninstructies
- Als er waarden van
xniet-positief zijn (negeren vanNA's), geef dan een fout. - Kijk wat er gebeurt als je een tekenargument doorgeeft aan
calc_harmonic_mean().
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
calc_harmonic_mean <- function(x, na.rm = FALSE) {
assert_is_numeric(x)
# Check if any values of x are non-positive
if(___(___(___), na.rm = TRUE)) {
# Throw an error
___("x contains non-positive values, so the harmonic mean makes no sense.")
}
x %>%
get_reciprocal() %>%
mean(na.rm = na.rm) %>%
get_reciprocal()
}
# See what happens when you pass it negative numbers
calc_harmonic_mean(std_and_poor500$pe_ratio - 20)