CommencerCommencer gratuitement

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

Afficher le cours

Instructions

  • Si certaines valeurs de x sont non positives (en ignorant les NA), 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)
Modifier et exécuter le code