Valori implicite categorice
Când împarți un vector numeric în intervale, trebuie să ai în vedere ce se întâmplă când o valoare cade exact pe o limită. Poți plasa acea valoare fie în categoria intervalului inferior, fie în cea a intervalului superior. Cu alte cuvinte, poți alege intervale care includ valorile de la limita superioară, dar nu și pe cele de la cea inferioară (în terminologie matematică, „deschis la stânga, închis la dreapta", sau (lo, hi]). Sau poți alege varianta opusă („închis la stânga, deschis la dreapta", sau [lo, hi)). cut_by_quantile() ar trebui să permită ambele variante.
șablonul pentru valorile implicite categorice este:
function(cat_arg = c("choice1", "choice2")) {
cat_arg <- match.arg(cat_arg)
}
Indiciu gratuit: În consolă, tastează head(rank) pentru a vedea începutul definiției funcției rank() și uită-te la argumentul ties.method.
Acest exercițiu face parte din cursul
Introducere în scrierea funcțiilor în R
Instrucțiuni pentru exercițiu
- Actualizează semnătura funcției
cut_by_quantile()astfel încât argumentulinterval_typesă poată fi"(lo, hi]"sau"[lo, hi)". Observă spațiul de după fiecare virgulă. - Actualizează corpul funcției
cut_by_quantile()pentru a potrivi argumentulinterval_type. - Elimină argumentul
interval_typedin apelul lacut_by_quantile().
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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]")