Začněte nyníZačněte zdarma

Vlastní logika chybových hlášení

Funkce assert_*() z balíčku assertive ne vždy vypíší dostatečně srozumitelnou chybovou zprávu. Například kontroly, zda je číslo v určitém rozsahu, oznámí, že hodnota je mimo rozsah, ale neřeknou proč je to problém. V takovém případě můžeš funkce is_*() kombinovat se zprávami, varováními nebo chybami a definovat si vlastní zpětnou vazbu.

Harmonický průměr dává smysl pouze tehdy, když jsou všechny hodnoty x kladné. (Zkus si spočítat harmonický průměr jedničky a mínus jedničky, a uvidíš proč.) Ujisti se, že na to tvoji uživatelé nezapomenou!

Toto cvičení je součástí kurzu

Introduction to Writing Functions in R

Zobrazit kurz

Pokyny k cvičení

  • Pokud jsou některé hodnoty x nekladné (s ignorováním NA), vyvolej chybu.
  • Podívej se, co se stane, když do calc_harmonic_mean() předáš argument typu character.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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)
Upravit a spustit kód