ComenzarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Si algún valor de x no es positivo (ignorando NA), 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)
Editar y ejecutar código