Kategoriální výchozí hodnoty
Při rozdělování číselného vektoru do kategorií je potřeba vyřešit, co se stane, když hodnota padne přesně na hranici intervalu. Takovou hodnotu můžeš přiřadit buď do kategorie nižšího, nebo vyššího intervalu. Jinak řečeno, intervaly mohou zahrnovat hodnoty na horní hranici, ale ne na dolní (matematicky „otevřený zleva, uzavřený zprava", tedy (lo, hi]), nebo naopak („uzavřený zleva, otevřený zprava", tedy [lo, hi)). Funkce cut_by_quantile() by měla umožňovat obě volby.
Vzor pro kategoriální výchozí hodnoty vypadá takto:
function(cat_arg = c("choice1", "choice2")) {
cat_arg <- match.arg(cat_arg)
}
Tip zdarma: Do konzole zadej head(rank) a prohlédni si začátek definice funkce rank() — zejména argument ties.method.
Toto cvičení je součástí kurzu
Introduction to Writing Functions in R
Pokyny k cvičení
- Uprav signaturu funkce
cut_by_quantile()tak, aby argumentinterval_typemohl nabývat hodnot"(lo, hi]"nebo"[lo, hi)". Všimni si mezery za každou čárkou. - Uprav tělo funkce
cut_by_quantile()tak, aby se argumentinterval_typepároval pomocímatch.arg. - Odstraň argument
interval_typez volání funkcecut_by_quantile().
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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]")