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
- Throw the error message as soon as you realize there is a problem (typically at the start of the function).
- 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
Exercise instructions
- Add a line to the body of
calc_harmonic_mean()
to assert thatx
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)