Valores predeterminados categóricos
Al dividir un vector numérico en intervalos, debes pensar qué pasa si un valor cae exactamente en un borde. Puedes meter este valor en la categoría del intervalo inferior o en la del superior. Es decir, puedes elegir intervalos que incluyan los valores en el límite superior pero no en el inferior (en terminología matemática, «abierto por la izquierda, cerrado por la derecha», o (lo, hi]). O puedes elegir lo contrario («cerrado por la izquierda, abierto por la derecha», o [lo, hi)). cut_by_quantile() debería permitir estas dos opciones.
El patrón para valores predeterminados categóricos es:
function(cat_arg = c("choice1", "choice2")) {
cat_arg <- match.arg(cat_arg)
}
Pista gratuita: En la consola, escribe head(rank) para ver el inicio de la definición de rank() y fíjate en el argumento ties.method.
Este ejercicio forma parte del curso
Introducción a la escritura de funciones en R
Instrucciones del ejercicio
- Actualiza la firma de
cut_by_quantile()para que el argumentointerval_typepueda ser"(lo, hi]"o"[lo, hi)". Observa el espacio después de cada coma. - Actualiza el cuerpo de
cut_by_quantile()para que haga coincidir el argumentointerval_type. - Elimina el argumento
interval_typede la llamada acut_by_quantile().
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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]")