Jakého jsem typu?
Právě jsi viděl/a čtyři funkce, které pomáhají zjistit, s jakým typem proměnné pracuješ. class() (docs) a typeof() (docs) jsou důležité a budou se ti často hodit. mode() (docs) a storage.mode() (docs) existují hlavně kvůli kompatibilitě s programovacím jazykem S.
V tomto cvičení se podíváš, co tyto funkce vrátí pro různé typy proměnných. Narazíš i na některé méně běžné typy, které možná ještě neznáš.
array(docs): Zobecnění matice s libovolným počtem dimenzí.formula(docs): Používají ji modelovací a vykreslovací funkce k definování vztahů mezi proměnnými.
Měj také na paměti, že v R existují tři druhy funkcí.
- Většina funkcí, se kterými se setkáš, se nazývá
closure(uzávěry). - Několik důležitých funkcí, jako například
length()(docs), jsou takzvanébuiltinfunkce, které využívají speciální mechanismus vyhodnocování pro vyšší rychlost. - Jazykové konstrukce jako
if(docs) awhile(docs) jsou také funkce! Říká se jimspecialfunkce.
Toto cvičení je součástí kurzu
Objektově orientované programování s S3 a R6 v R
Pokyny k cvičení
Funkce type_info() je v tvém pracovním prostředí předem definována a vrací class(), mode(), typeof() a storage.mode() svého vstupu. (Zadej type_info do konzole, abys viděl/a, jak funguje.)
- Vytvoř
some_vars— seznam ukázkových objektů připravených v editoru. - Pomocí
lapplyprojdi prvky seznamusome_varsa zavolej na každý z nich funkcitype_info(), abys prozkoumal/a jejich typ.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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
___