LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

  • Wenn irgendwelche Werte von x nicht positiv sind (unter Ignorieren von NAs), 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)
Code bearbeiten und ausführen