Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Jeśli którakolwiek z wartości x jest niedodatnia (pomijając wartości NA), 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)
Edytuj i uruchom kod