Bắt đầu ngayBắt đầu miễn phí

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

Xem khóa học

Hướng dẫn bài tập

  • Nếu bất kỳ giá trị nào của x không dương (bỏ qua NA) 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)
Chỉnh sửa và Chạy Mã