Get startedGet started for free

Throwing errors with bad arguments

If a user provides a bad input to a function, the best course of action is to throw an error letting them know. The two rules are

  1. Throw the error message as soon as you realize there is a problem (typically at the start of the function).
  2. Make the error message easily understandable.

You can use the assert_*() functions from assertive to check inputs and throw errors when they fail.

This exercise is part of the course

Introduction to Writing Functions in R

View Course

Exercise instructions

  • Add a line to the body of calc_harmonic_mean() to assert that x is numeric.
  • Look at what happens when you pass a character argument to calc_harmonic_mean().

Hands-on interactive exercise

Have a go at this exercise by completing this sample code.

calc_harmonic_mean <- function(x, na.rm = FALSE) {
  # Assert that x is numeric
  ___
  x %>%
    get_reciprocal() %>%
    mean(na.rm = na.rm) %>%
    get_reciprocal()
}

# See what happens when you pass it strings
calc_harmonic_mean(std_and_poor500$sector)
Edit and Run Code