Власна логіка помилок
Іноді функції assert_*() з пакета assertive не дають найінформативнішого повідомлення про помилку. Наприклад, перевірки, що число входить до числового діапазону, повідомлять користувачеві, що значення поза діапазоном, але не пояснять, чому це проблема. У такому разі ви можете використати функції is_*() разом із повідомленнями, попередженнями або помилками, щоб задати власний зворотний зв'язок.
Гармонічне середнє має сенс лише тоді, коли у x всі значення додатні. (Спробуйте обчислити гармонічне середнє для одного та мінус одного — і побачите чому.) Дайте це зрозуміти своїм користувачам!
Ця вправа є частиною курсу
Вступ до написання функцій в R
Інструкції до вправи
- Якщо будь-які значення
xє недодатними (ігноруючиNA), то згенеруйте помилку. - Перегляньте, що відбувається, коли ви передаєте символьний аргумент до
calc_harmonic_mean().
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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)