Logică personalizată pentru erori
Uneori, funcțiile assert_*() din assertive nu oferă cele mai clare mesaje de eroare. De exemplu, verificările care testează dacă un număr se află într-un interval numeric îi vor spune utilizatorului că o valoare este în afara intervalului, dar nu vor explica de ce aceasta este o problemă. În astfel de cazuri, poți folosi funcțiile is_*() împreună cu mesaje, avertismente sau erori pentru a defini feedback personalizat.
Media armonică are sens doar atunci când toate valorile din x sunt pozitive. (Încearcă să calculezi media armonică a lui unu și minus unu pentru a înțelege de ce.) Asigură-te că utilizatorii tăi știu acest lucru!
Acest exercițiu face parte din cursul
Introducere în scrierea funcțiilor în R
Instrucțiuni pentru exercițiu
- Dacă oricare dintre valorile lui
xsunt non-pozitive (ignorând valorileNA), generează o eroare. - Observă ce se întâmplă când transmiți un argument de tip caracter funcției
calc_harmonic_mean().
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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)