Własna logika obsługi błędów
Funkcje assert_*() z pakietu assertive nie zawsze zwracają najbardziej informatywne komunikaty o błędach. Na przykład asercje sprawdzające, czy liczba mieści się w określonym zakresie, informują użytkownika, że wartość jest poza zakresem, ale nie wyjaśniają, dlaczego stanowi to problem. W takich przypadkach możesz użyć funkcji is_*() w połączeniu z komunikatami, ostrzeżeniami lub błędami, aby zdefiniować własne informacje zwrotne.
Średnia harmoniczna ma sens tylko wtedy, gdy wszystkie wartości x są dodatnie. (Spróbuj obliczyć średnią harmoniczną z jedynki i minus jedynki, aby zobaczyć dlaczego). Upewnij się, że użytkownicy są tego świadomi!
To ćwiczenie jest częścią kursu
Wprowadzenie do pisania funkcji w R
Instrukcje do ćwiczenia
- Jeśli którakolwiek z wartości
xjest niedodatnia (pomijając wartościNA), zgłoś błąd. - Sprawdź, co się dzieje, gdy przekażesz argument tekstowy do funkcji
calc_harmonic_mean().
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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)