IniziaInizia gratis

Logica di errore personalizzata

A volte le funzioni assert_*() di assertive non forniscono il messaggio di errore più informativo. Ad esempio, le asserzioni che verificano se un numero rientra in un intervallo numerico diranno all’utente che un valore è fuori intervallo, ma non spiegheranno perché ciò sia un problema. In questi casi, puoi usare le funzioni is_*() insieme a messaggi, avvisi o errori per definire un feedback personalizzato.

La media armonica ha senso solo quando x contiene tutti valori positivi. (Prova a calcolare la media armonica di uno e meno uno per capire il perché.) Assicurati che i tuoi utenti lo sappiano!

Questo esercizio fa parte del corso

Introduzione alla scrittura di funzioni in R

Visualizza il corso

Istruzioni dell'esercizio

  • Se uno qualsiasi dei valori di x è non positivo (ignorando gli NA), genera un errore.
  • Osserva cosa succede quando passi un argomento di tipo character a calc_harmonic_mean().

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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)
Modifica ed esegui il codice