Zacznij terazZacznij za darmo

Kategoryczne wartości domyślne

Dzieląc wektor liczbowy na przedziały, trzeba zdecydować, co zrobić z wartością, która trafia dokładnie na granicę przedziału. Możesz przypisać ją do niższego lub wyższego przedziału. Innymi słowy, możesz wybrać przedziały, które zawierają wartości na górnej granicy, ale nie na dolnej (w terminologii matematycznej: „otwarty od lewej, zamknięty od prawej", czyli (lo, hi]). Albo odwrotnie: „zamknięty od lewej, otwarty od prawej", czyli [lo, hi). Funkcja cut_by_quantile() powinna obsługiwać obie te opcje.

Wzorzec dla kategorycznych wartości domyślnych wygląda następująco:

function(cat_arg = c("choice1", "choice2")) {
  cat_arg <- match.arg(cat_arg)
}

Darmowa podpowiedź: W konsoli wpisz head(rank), aby zobaczyć początek definicji funkcji rank(), i zwróć uwagę na argument ties.method.

To ćwiczenie jest częścią kursu

Wprowadzenie do pisania funkcji w R

Zobacz kurs

Instrukcje do ćwiczenia

  • Zaktualizuj sygnaturę funkcji cut_by_quantile() tak, aby argument interval_type mógł przyjmować wartość "(lo, hi]" lub "[lo, hi)". Zwróć uwagę na spację po każdym przecinku.
  • Zaktualizuj ciało funkcji cut_by_quantile(), aby dopasowywała argument interval_type.
  • Usuń argument interval_type z wywołania funkcji cut_by_quantile().

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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]")
Edytuj i uruchom kod