Kategoriska standardvärden
När du delar upp en numerisk vektor behöver du ta ställning till vad som händer om ett värde hamnar exakt på en gräns. Du kan antingen placera värdet i kategorin för det lägre intervallet eller det högre. Det vill säga: du kan välja att dina intervall inkluderar värden vid den övre gränsen men inte den nedre (på matematiskt språk: "öppen till vänster, stängd till höger", eller (lo, hi]). Eller tvärtom ("stängd till vänster, öppen till höger", eller [lo, hi)). cut_by_quantile() ska stödja dessa två val.
Mönstret för kategoriska standardvärden är:
function(cat_arg = c("choice1", "choice2")) {
cat_arg <- match.arg(cat_arg)
}
Gratis ledtråd: Skriv head(rank) i konsolen för att se början av rank()-definitionen och titta på argumentet ties.method.
Den här övningen är en del av kursen
Introduktion till att skriva funktioner i R
Övningsinstruktioner
- Uppdatera signaturen för
cut_by_quantile()så att argumentetinterval_typekan vara"(lo, hi]"eller"[lo, hi)". Observera mellanslaget efter varje komma. - Uppdatera kroppen i
cut_by_quantile()så att argumentetinterval_typematchas. - Ta bort argumentet
interval_typefrån anropet tillcut_by_quantile().
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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]")