Logique d’erreur personnalisée
Parfois, les fonctions assert_*() du package assertive ne fournissent pas le message d’erreur le plus informatif. Par exemple, les assertions qui vérifient si un nombre appartient à un intervalle numérique indiquent à l’utilisateur qu’une valeur est hors intervalle, mais elles n’expliquent pas pourquoi c’est un problème. Dans ce cas, vous pouvez utiliser les fonctions is_*() conjointement avec des messages, des avertissements ou des erreurs pour définir un retour personnalisé.
La moyenne harmonique n’a de sens que lorsque x ne contient que des valeurs strictement positives. (Essayez de calculer la moyenne harmonique de un et moins un pour comprendre pourquoi.) Assurez-vous que vos utilisateurs le savent !
Cet exercice fait partie du cours
Introduction à l’écriture de fonctions en R
Instructions
- Si certaines valeurs de
xsont non positives (en ignorant lesNA), alors levez une erreur. - Observez ce qui se passe lorsque vous passez un argument de type caractère à
calc_harmonic_mean().
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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)