Valori predefiniti categorici
Quando suddividi un vettore numerico, devi considerare cosa succede se un valore cade esattamente su un confine. Puoi inserire questo valore nella categoria dell’intervallo inferiore oppure in quella dell’intervallo superiore. In altre parole, puoi scegliere intervalli che includono i valori sul confine superiore ma non su quello inferiore (in termini matematici, "aperto a sinistra, chiuso a destra", ovvero (lo, hi]). Oppure puoi scegliere l’opposto ("chiuso a sinistra, aperto a destra", ovvero [lo, hi)). cut_by_quantile() dovrebbe consentire entrambe queste scelte.
Lo schema per valori predefiniti categorici è:
function(cat_arg = c("choice1", "choice2")) {
cat_arg <- match.arg(cat_arg)
}
Suggerimento gratuito: Nella console, digita head(rank) per vedere l’inizio della definizione di rank() e guarda l’argomento ties.method.
Questo esercizio fa parte del corso
Introduzione alla scrittura di funzioni in R
Istruzioni dell'esercizio
- Aggiorna la firma di
cut_by_quantile()in modo che l’argomentointerval_typepossa essere"(lo, hi]"oppure"[lo, hi)". Nota lo spazio dopo ogni virgola. - Aggiorna il corpo di
cut_by_quantile()per effettuare il match dell’argomentointerval_type. - Rimuovi l’argomento
interval_typedalla chiamata acut_by_quantile().
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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]")