Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Pas de signatuur van cut_by_quantile() aan zodat het argument interval_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 argument interval_type te matchen.
  • Verwijder het argument interval_type uit de aanroep van cut_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]")
Code bewerken en uitvoeren