Kom igångKom igång gratis

Anpassad felhanteringslogik

Ibland ger inte assert_*()-funktionerna i assertive de mest informativa felmeddelandena. Till exempel talar påståenden som kontrollerar om ett tal befinner sig inom ett numeriskt intervall om att ett värde är utanför intervallet, men förklarar inte varför det är ett problem. I sådana fall kan du använda is_*()-funktionerna tillsammans med meddelanden, varningar eller fel för att definiera anpassad återkoppling.

Det harmoniska medelvärdet är bara meningsfullt när alla värden i x är positiva. (Prova att beräkna det harmoniska medelvärdet av ett och minus ett för att förstå varför.) Se till att dina användare känner till detta!

Den här övningen är en del av kursen

Introduktion till att skriva funktioner i R

Visa kurs

Övningsinstruktioner

  • Om något värde i x är icke-positivt (exklusive NA-värden) ska du utlösa ett fel.
  • Observera vad som händer när du skickar ett teckenargument till calc_harmonic_mean().

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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)
Redigera och kör kod