Eigene Fehlerlogik
Manchmal liefern die assert_*()-Funktionen aus assertive keine besonders hilfreichen Fehlermeldungen. Beispielsweise teilen die Prüfungen, die kontrollieren, ob eine Zahl in einem Zahlenbereich liegt, zwar mit, dass ein Wert außerhalb des Bereichs liegt, aber nicht, warum das ein Problem ist. In solchen Fällen kannst du die is_*()-Funktionen zusammen mit Meldungen, Warnungen oder Fehlern verwenden, um individuelles Feedback zu definieren.
Der harmonische Mittelwert ergibt nur Sinn, wenn x ausschließlich positive Werte enthält. (Versuche, den harmonischen Mittelwert von eins und minus eins zu berechnen, dann siehst du warum.) Mach deine Nutzer:innen darauf aufmerksam!
Diese Übung ist Teil des Kurses
Einführung in das Schreiben von Funktionen in R
Anleitung zur Übung
- Wenn irgendwelche Werte von
xnicht positiv sind (unter Ignorieren vonNAs), löse einen Fehler aus. - Schau dir an, was passiert, wenn du ein Zeichen-Argument an
calc_harmonic_mean()übergibst.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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)