Jaki to typ?
Poznałeś właśnie cztery funkcje, które pomagają określić typ zmiennej. class() (dokumentacja) i typeof() (dokumentacja) są szczególnie przydatne i będziesz z nich korzystać często. mode() (dokumentacja) i storage.mode() (dokumentacja) istnieją głównie dla zachowania zgodności z językiem programowania S.
W tym ćwiczeniu sprawdzisz, co te funkcje zwracają dla różnych typów zmiennych. Poniżej znajdziesz kilka rzadziej spotykanych typów.
array(dokumentacja): Uogólnienie macierzy o dowolnej liczbie wymiarów.formula(dokumentacja): Używana przez funkcje modelowania i wizualizacji do definiowania zależności między zmiennymi.
Warto też wiedzieć, że w R istnieją trzy rodzaje funkcji.
- Większość spotykanych funkcji to tzw.
closure(domknięcia). - Kilka ważnych funkcji, takich jak
length()(dokumentacja), to funkcjebuiltin, które używają specjalnego mechanizmu ewaluacji, dzięki czemu działają szybciej. - Konstrukcje językowe, takie jak
if(dokumentacja) iwhile(dokumentacja), również są funkcjami! Noszą nazwę funkcjispecial.
To ćwiczenie jest częścią kursu
Programowanie obiektowe z S3 i R6 w R
Instrukcje do ćwiczenia
Funkcja type_info() jest już zdefiniowana w twoim środowisku pracy – zwraca wyniki class(), mode(), typeof() i storage.mode() dla podanego argumentu. (Wpisz type_info w konsoli, żeby zobaczyć, jak działa.)
- Utwórz
some_vars– listę przykładowych obiektów podanych w edytorze. - Użyj
lapply, aby przeiterować po elementachsome_varsi wywołaćtype_info()na każdym z nich, żeby zbadać ich typy.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Look at the definition of type_info()
type_info
# Create list of example variables
some_vars <- list(
an_integer_vector = rpois(24, lambda = 5),
a_numeric_vector = rbeta(24, shape1 = 1, shape2 = 1),
an_integer_array = array(rbinom(24, size = 8, prob = 0.5), dim = c(2, 3, 4)),
a_numeric_array = array(rweibull(24, shape = 1, scale = 1), dim = c(2, 3, 4)),
a_data_frame = data.frame(int = rgeom(24, prob = 0.5), num = runif(24)),
a_factor = factor(month.abb),
a_formula = y ~ x,
a_closure_function = mean,
a_builtin_function = length,
a_special_function = `if`
)
# Loop over some_vars calling type_info() on each element to explore them
___