ComeçarComece de graça

Lógica de erro personalizada

Às vezes, as funções assert_*() do assertive não fornecem a mensagem de erro mais informativa. Por exemplo, as asserções que verificam se um número está em um intervalo numérico avisam que um valor está fora do intervalo, mas não dizem por que isso é um problema. Nesses casos, você pode usar as funções is_*() junto com mensagens, avisos ou erros para definir feedback personalizado.

A média harmônica só faz sentido quando x tem todos os valores positivos. (Tente calcular a média harmônica de um e menos um para entender o porquê.) Garanta que seus usuários saibam disso!

Este exercício faz parte do curso

Introdução à Escrita de Funções em R

Ver curso

Instruções do exercício

  • Se algum valor de x for não positivo (ignorando NAs), então lance um erro.
  • Veja o que acontece quando você passa um argumento de caracteres para calc_harmonic_mean().

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

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 e executar o código