Giá trị mặc định dạng phân loại
Khi chia nhỏ một vector số, bạn cần để ý điều gì xảy ra nếu một giá trị rơi đúng vào ranh giới. Bạn có thể đưa giá trị đó vào nhóm của khoảng thấp hơn hoặc khoảng cao hơn. Cụ thể, bạn có thể chọn các khoảng bao gồm giá trị ở ranh giới trên nhưng không bao gồm ranh giới dưới (theo thuật ngữ toán học là "mở bên trái, đóng bên phải", hay (lo, hi]). Hoặc bạn có thể chọn ngược lại ("đóng bên trái, mở bên phải", hay [lo, hi)). cut_by_quantile() nên cho phép hai lựa chọn này.
Mẫu cho giá trị mặc định dạng phân loại là:
function(cat_arg = c("choice1", "choice2")) {
cat_arg <- match.arg(cat_arg)
}
Gợi ý miễn phí: Trong console, gõ head(rank) để xem phần đầu định nghĩa của rank(), và xem đối số ties.method.
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
Hướng dẫn bài tập
- Cập nhật chữ ký của
cut_by_quantile()để đối sốinterval_typecó thể là"(lo, hi]"hoặc"[lo, hi)". Lưu ý có khoảng trắng sau mỗi dấu phẩy. - Cập nhật phần thân của
cut_by_quantile()để ghép đối sốinterval_type. - Xóa đối số
interval_typekhỏi lời gọicut_by_quantile().
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.
# 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]")