類別型預設值
當你要把數值向量切成多段時,需要考慮若某個值剛好落在邊界上會怎麼處理。你可以把這個值放進較低區間或較高區間。也就是說,你可以選擇區間包含上邊界但不包含下邊界(數學上稱為「左開右閉」,即 (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]")