開始使用免費開始

類別型預設值

當你要把數值向量切成多段時,需要考慮若某個值剛好落在邊界上會怎麼處理。你可以把這個值放進較低區間或較高區間。也就是說,你可以選擇區間包含上邊界但不包含下邊界(數學上稱為「左開右閉」,即 (lo, hi])。或者你也可以選擇相反的方式(「左閉右開」,即 [lo, hi))。cut_by_quantile() 應該要允許這兩種選擇。

類別型預設值的典型寫法是:

function(cat_arg = c("choice1", "choice2")) {
  cat_arg <- match.arg(cat_arg)
}

【免費提示】:在主控台輸入 head(rank),查看 rank() 定義的開頭,並留意 ties.method 引數。

本練習屬於課程

R 函式撰寫入門

檢視課程

練習說明

  • 更新 cut_by_quantile() 的簽名,讓 interval_type 引數可以是 "(lo, hi]""[lo, hi)"。注意每個逗號後面都有空格。
  • 更新 cut_by_quantile() 的函式本體,去比對 interval_type 引數。
  • 從對 cut_by_quantile() 的呼叫中移除 interval_type 引數。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Set the categories for interval_type to "(lo, hi]" and "[lo, hi)"
cut_by_quantile <- function(x, n = 5, na.rm = FALSE, labels = NULL, 
                            interval_type) {
  # Match the interval_type argument
  ___ <- ___
  probs <- seq(0, 1, length.out = n + 1)
  qtiles <- quantile(x, probs, na.rm = na.rm, names = FALSE)
  right <- switch(interval_type, "(lo, hi]" = TRUE, "[lo, hi)" = FALSE)
  cut(x, qtiles, labels = labels, right = right, include.lowest = TRUE)
}

# Remove the interval_type argument from the call
cut_by_quantile(n_visits, interval_type = "(lo, hi]")
編輯並執行程式碼