Kategoryczne wartości domyślne
Dzieląc wektor liczbowy na przedziały, trzeba zdecydować, co zrobić z wartością, która trafia dokładnie na granicę przedziału. Możesz przypisać ją do niższego lub wyższego przedziału. Innymi słowy, możesz wybrać przedziały, które zawierają wartości na górnej granicy, ale nie na dolnej (w terminologii matematycznej: „otwarty od lewej, zamknięty od prawej", czyli (lo, hi]). Albo odwrotnie: „zamknięty od lewej, otwarty od prawej", czyli [lo, hi). Funkcja cut_by_quantile() powinna obsługiwać obie te opcje.
Wzorzec dla kategorycznych wartości domyślnych wygląda następująco:
function(cat_arg = c("choice1", "choice2")) {
cat_arg <- match.arg(cat_arg)
}
Darmowa podpowiedź: W konsoli wpisz head(rank), aby zobaczyć początek definicji funkcji rank(), i zwróć uwagę na argument ties.method.
To ćwiczenie jest częścią kursu
Wprowadzenie do pisania funkcji w R
Instrukcje do ćwiczenia
- Zaktualizuj sygnaturę funkcji
cut_by_quantile()tak, aby argumentinterval_typemógł przyjmować wartość"(lo, hi]"lub"[lo, hi)". Zwróć uwagę na spację po każdym przecinku. - Zaktualizuj ciało funkcji
cut_by_quantile(), aby dopasowywała argumentinterval_type. - Usuń argument
interval_typez wywołania funkcjicut_by_quantile().
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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]")