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