CommencerCommencer gratuitement

Valeurs par défaut catégorielles

Lorsque vous découpez un vecteur numérique, vous devez vous demander ce qui se passe si une valeur tombe exactement sur une borne. Vous pouvez placer cette valeur dans la catégorie de l’intervalle inférieur ou de l’intervalle supérieur. Autrement dit, vous pouvez choisir des intervalles qui incluent les valeurs sur la borne supérieure mais pas sur 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() doit permettre ces deux choix.

Le modèle pour des 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.

Cet exercice fait partie du cours

Introduction à l’écriture de fonctions en R

Afficher le cours

Instructions

  • Mettez à jour la signature de cut_by_quantile() pour que l’argument interval_type puisse être "(lo, hi]" ou "[lo, hi)". Notez l’espace après chaque virgule.
  • Mettez à jour le corps de cut_by_quantile() pour mettre en correspondance l’argument interval_type.
  • Supprimez l’argument interval_type de l’appel à cut_by_quantile().

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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