Lógica de error personalizada
A veces, las funciones assert_*() de assertive no dan el mensaje de error más informativo. Por ejemplo, las aserciones que comprueban si un número está en un rango numérico le dirán a la persona usuaria que un valor está fuera de rango, pero no explicarán por qué eso es un problema. En ese caso, puedes usar las funciones is_*() junto con mensajes, advertencias o errores para definir comentarios personalizados.
La media armónica solo tiene sentido cuando x contiene todos valores positivos. (Prueba a calcular la media armónica de uno y menos uno para ver por qué.) ¡Asegúrate de que tus usuarios lo sepan!
Este ejercicio forma parte del curso
Introducción a la escritura de funciones en R
Instrucciones del ejercicio
- Si algún valor de
xno es positivo (ignorandoNA), entonces lanza un error. - Mira qué ocurre cuando pasas un argumento de tipo carácter a
calc_harmonic_mean().
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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)