LoslegenKostenlos loslegen

Kategorische Standardwerte

Wenn du einen numerischen Vektor in Abschnitte unterteilst, musst du dir überlegen, was passiert, wenn ein Wert genau auf einer Grenze liegt. Du kannst diesen Wert entweder der Kategorie des unteren Intervalls oder des oberen Intervalls zuordnen. Das heißt, du kannst deine Intervalle so wählen, dass Werte an der oberen Grenze enthalten sind, aber nicht an der unteren (in mathematischer Terminologie „links offen, rechts geschlossen“ oder (lo, hi]). Oder du wählst das Gegenteil („links geschlossen, rechts offen“ oder [lo, hi)). cut_by_quantile() soll diese beiden Optionen erlauben.

Das Muster für kategorische Standardwerte ist:

function(cat_arg = c("choice1", "choice2")) {
  cat_arg <- match.arg(cat_arg)
}

Freier Hinweis: Tippe in der Konsole head(rank), um den Anfang der Definition von rank() zu sehen, und schau dir das Argument ties.method an.

Diese Übung ist Teil des Kurses

Einführung in das Schreiben von Funktionen in R

Kurs anzeigen

Anleitung zur Übung

  • Aktualisiere die Signatur von cut_by_quantile(), sodass das Argument interval_type entweder "(lo, hi]" oder "[lo, hi)" sein kann. Beachte das Leerzeichen nach jedem Komma.
  • Aktualisiere den Body von cut_by_quantile(), um das Argument interval_type abzugleichen.
  • Entferne das Argument interval_type aus dem Aufruf von cut_by_quantile().

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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 bearbeiten und ausführen