CommencezCommencez gratuitement

Valeurs par défaut catégorielles

Quand vous découpez un vecteur numérique, vous devez vous demander ce qui se passe si une valeur tombe exactement sur une limite. Vous pouvez soit placer cette valeur dans la catégorie de l'intervalle inférieur, soit dans celle de l'intervalle supérieur. Autrement dit, vous pouvez choisir des intervalles qui incluent les valeurs à la borne supérieure mais pas à la borne inférieure (en termes mathématiques, « ouvert à gauche, fermé à droite », soit (lo, hi]). Ou vous pouvez choisir l'inverse (« fermé à gauche, ouvert à droite », soit [lo, hi)). cut_by_quantile() devrait permettre ces deux choix.

Le modèle pour les valeurs par défaut catégorielles est :

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

Indice gratuit : Dans la console, tapez head(rank) pour voir le début de la définition de rank(), et regardez l'argument ties.method.

Cette activité fait partie du cours

Introduction à l'écriture de fonctions en R

Voir le cours

Instructions de l’exercice

  • Mettez à jour la signature de cut_by_quantile() afin que l'argument interval_type puisse être "(lo, hi]" ou "[lo, hi)". Remarquez l'espace après chaque virgule.
  • Mettez à jour le corps de cut_by_quantile() pour faire la mise en correspondance de l'argument interval_type.
  • Retirez l'argument interval_type de l'appel à cut_by_quantile().

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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]")
Modifier et exécuter le code