Sửa đối số của hàm
Hàm tính trung bình điều hòa (harmonic mean) gần như đã hoàn chỉnh. Tuy nhiên, bạn vẫn cần bổ sung một số kiểm tra cho đối số na.rm. Lần này, thay vì báo lỗi khi đầu vào sai định dạng, bạn sẽ cố gắng tự sửa nó.
na.rm phải là một vector logic với đúng một phần tử (tức là TRUE hoặc FALSE).
Gói assertive đã được nạp sẵn cho bạn.
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
- Cập nhật
calc_harmonic_mean()để sửa đối sốna.rmbằng cách dùnguse_first()để chọn phần tửna.rmđầu tiên, vàcoerce_to()để chuyển nó sang kiểu logic.
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.
# Update the function definition to fix the na.rm argument
calc_harmonic_mean <- function(x, na.rm = FALSE) {
assert_is_numeric(x)
if(any(is_non_positive(x), na.rm = TRUE)) {
stop("x contains non-positive values, so the harmonic mean makes no sense.")
}
# Use the first value of na.rm, and coerce to logical
___ <- ___(___(___), ___ = "___")
x %>%
get_reciprocal() %>%
mean(na.rm = na.rm) %>%
get_reciprocal()
}
# See what happens when you pass it malformed na.rm
calc_harmonic_mean(std_and_poor500$pe_ratio, na.rm = 1:5)