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
Instructions de l’exercice
- Mettez à jour la signature de
cut_by_quantile()afin que l'argumentinterval_typepuisse ê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'argumentinterval_type. - Retirez l'argument
interval_typede 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]")