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
Pokyny k cvičení
- Pokud jsou některé hodnoty
xnekladné (s ignorovánímNA), 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)