Začněte nyníZačněte zdarma

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

Zobrazit kurz

Pokyny k cvičení

  • Uprav signaturu funkce cut_by_quantile() tak, aby argument interval_type mohl 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 argument interval_type pároval pomocí match.arg.
  • Odstraň argument interval_type z volání funkce cut_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]")
Upravit a spustit kód