Logique d'erreur personnalisée
Parfois, les fonctions assert_*() du paquet assertive ne donnent pas le message d'erreur le plus informatif. Par exemple, les assertions qui vérifient si un nombre se trouve dans une plage numérique indiquent qu'une valeur est hors plage, mais elles n'expliquent pas pourquoi c'est un problème. Dans ce cas, vous pouvez utiliser les fonctions is_*() avec des messages, des avertissements ou des erreurs pour définir une rétroaction personnalisée.
La moyenne harmonique n'a de sens que lorsque x contient uniquement des valeurs positives. (Essayez de calculer la moyenne harmonique de un et de moins un pour comprendre pourquoi.) Assurez-vous que vos utilisateurs le sachent!
Cette activité fait partie du cours
Introduction à l'écriture de fonctions en R
Instructions de l’exercice
- Si une des valeurs de
xest non positive (en ignorant lesNA), alors déclenchez une erreur. - Voyez ce qui se passe lorsque vous transmettez un argument de type caractère à
calc_harmonic_mean().
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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)