カテゴリ型のデフォルト
数値ベクトルを区間に分割するとき、値がちょうど境界に乗った場合をどう扱うかを考える必要があります。下側の区間に含めるか、上側の区間に含めるかのどちらかです。つまり、上側の境界を含み下側の境界を含まない区間(数学の表現では「左開右閉」、(lo, hi])を選ぶこともできますし、その逆(「左閉右開」、[lo, hi))を選ぶこともできます。cut_by_quantile() では、この2つの選択肢が指定できるようにします。
カテゴリ型のデフォルトの定型は次のとおりです。
function(cat_arg = c("choice1", "choice2")) {
cat_arg <- match.arg(cat_arg)
}
Free hint: コンソールで 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]")