開始使用免費開始

自訂錯誤邏輯

有時候 assertive 套件裡的 assert_*() 函式所提供的錯誤訊息不夠具體。例如,用來檢查數值是否落在範圍內的斷言,只會告訴使用者某個值超出範圍,卻不會說明為什麼這是個問題。遇到這種情況,你可以把 is_*() 函式和訊息、警告或錯誤搭配使用,來自訂回饋內容。

調和平均只在 x 的所有值都為正時才有意義。(試著計算 1 與 -1 的調和平均就知道原因了。)請讓你的使用者知道這一點!

本練習屬於課程

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)
編輯並執行程式碼