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
Anleitung zur Übung
- Aktualisiere die Signatur von
cut_by_quantile(), sodass das Argumentinterval_typeentweder"(lo, hi]"oder"[lo, hi)"sein kann. Beachte das Leerzeichen nach jedem Komma. - Aktualisiere den Body von
cut_by_quantile(), um das Argumentinterval_typeabzugleichen. - Entferne das Argument
interval_typeaus dem Aufruf voncut_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]")