IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Aggiorna la firma di cut_by_quantile() in modo che l’argomento interval_type possa essere "(lo, hi]" oppure "[lo, hi)". Nota lo spazio dopo ogni virgola.
  • Aggiorna il corpo di cut_by_quantile() per effettuare il match dell’argomento interval_type.
  • Rimuovi l’argomento interval_type dalla chiamata a cut_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]")
Modifica ed esegui il codice