Tùy biến logic báo lỗi
Đôi khi các hàm assert_*() trong assertive không đưa ra thông báo lỗi thật sự hữu ích. Ví dụ, các kiểm tra xem một số có nằm trong một khoảng số sẽ chỉ nói rằng giá trị nằm ngoài phạm vi, nhưng lại không nói vì sao đó là vấn đề. Trong trường hợp đó, bạn có thể dùng các hàm is_*() cùng với các thông báo, cảnh báo, hoặc lỗi để tạo phản hồi tùy biến.
Trung bình điều hòa chỉ có ý nghĩa khi x gồm toàn các giá trị dương. (Hãy thử tính trung bình điều hòa của một và âm một để hiểu vì sao.) Hãy đảm bảo người dùng của bạn biết điều này!
Bài tập này là một phần của khóa học
Nhập môn viết hàm trong R
Hướng dẫn bài tập
- Nếu bất kỳ giá trị nào của
xkhông dương (bỏ quaNA) thì ném ra lỗi. - Hãy xem điều gì xảy ra khi bạn truyền một đối số kiểu ký tự vào
calc_harmonic_mean().
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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)