Categorische standaardwaarden
Als je een numerieke vector in stukken hakt, moet je rekening houden met wat er gebeurt als een waarde precies op een grens valt. Je kunt deze waarde in de categorie van het lagere of het hogere interval plaatsen. Met andere woorden, je kunt je intervallen zo kiezen dat ze waarden op de bovengrens wel en op de ondergrens niet bevatten (in wiskundige termen: "open links, gesloten rechts", of (lo, hi]). Of je kiest het omgekeerde ("gesloten links, open rechts", of [lo, hi)). cut_by_quantile() moet deze twee keuzes toestaan.
Het patroon voor categorische standaardwaarden is:
function(cat_arg = c("choice1", "choice2")) {
cat_arg <- match.arg(cat_arg)
}
Gratis hint: Typ in de console head(rank) om het begin van de definitie van rank() te zien, en kijk naar het argument ties.method.
Deze oefening maakt deel uit van de cursus
Introductie tot functies schrijven in R
Oefeninstructies
- Pas de signatuur van
cut_by_quantile()aan zodat het argumentinterval_type"(lo, hi]"of"[lo, hi)"kan zijn. Let op de spatie na elke komma. - Pas de body van
cut_by_quantile()aan om het argumentinterval_typete matchen. - Verwijder het argument
interval_typeuit de aanroep vancut_by_quantile().
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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]")