Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Als er waarden van x niet-positief zijn (negeren van NA'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)
Code bewerken en uitvoeren