
Objekty
Pro základní práci s objekty (zobrazení, odstranění) v pracovním prostoru doporučujeme nastudovat sekci "Další užitečné příkazy" ve výukovém modulu Základy informatiky pro biologyVýpočetní matematické systémy Výuka jazyka R První setkání s jazykem R Workspace(pracovní prostor).
Objekty v R jsou vždy vytvořeny přiřazením a uloženy pod nějakým názvem (viz kapitola Příkazy v R).
Z uživatelského hlediska objekty v R můžeme rozdělit na datové struktury - které obsahují data a ostatní. Datovou strukturou je například vektor, matice nebo seznam, zatímco nedatovou strukturou je například funkce, prostředí (environment), jazykový výraz a podobně.
Objekty jsou charakterizovány svými atributy (vlastnostmi). Patří sem například typ a mód objektu, ale i atributy, které jsou specifické pro druh objektu, které objekt může a nemusí mít. Příkladem je například dimenze, která není definována u vektoru nebo listu, ale je definována u matice:
> dim(1:10)
NULL
> dim(a)
NULL
> dim(matrix(1:4,2,2))
[1] 2 2
Nejdůležitějšími vlastnostmi z hlediska analýzy dat jsou typ (typeof, mode, strorage.mode) a třída objektu (class).
Typ objektu z pohledu R se dá zjistit funkcí
> typeof()
Existují ještě další starší typů objektů, jako úložný mód:
> storage.mode()
...nebo mód - ještě starší klasifikace typu objektu z pohledu S (Becker, Chambers & Wilks (1988))
> mode()
Třída objektu je klasifikace potřebná pro generické funkce.
> class()
Pro základy rozdělení typů datových objektů doporučujeme nastudovat výukovou jednotku Základy informatiky pro biologyVýpočetní matematické systémy Výuka jazyka R Datové typy objektů.
Víme tedy, že mezi základní datové typy patří:
- číslo (numeric) - integer a double
- komplexní číslo (complex)
- logické hodnoty (logical)
- řeťězec (character)
- NA (chybějící hodnota)
- NULL (neexistující hodnota)
- NaN, Inf, -Inf
Typů objektů (které nejsou "data") je ovšem více, například "expression" nebo "builtin".
Do Tabulky 1 jsme pro orienatci vypsali typy objektů v R na základě všech čtyř dostupných klasifikací. Zvýrazněny jsou případy, u kterých se klasifikace liší.
Na objektu, který je výsledkem funkce hist() si ukážeme rozdíl atributu třída od atributu typ
> a = hist(rnorm(1000), plot=FALSE)
Zobrazíme-li si objekt a, vypadá jako seznam (list)
> a
$breaks
[1] -4.0 -3.5 -3.0 -2.5 -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5
$counts
[1] 1 0 5 19 43 87 168 168 193 149 101 43 16 6 1
$density
[1] 0.002 0.000 0.010 0.038 0.086 0.174 0.336 0.336 0.386 0.298 0.202 0.086 0.032 0.012 0.002
$mids
[1] -3.75 -3.25 -2.75 -2.25 -1.75 -1.25 -0.75 -0.25 0.25 0.75 1.25 1.75 2.25 2.75 3.25
$xname
[1] "rnorm(1000)"
$equidist
[1] TRUE
attr(,"class")
[1] "histogram"
Typ objektu je opravdu "list"
> typeof(a)
[1] "list"
... ale jeho třída je "histogram"
> class(a)
[1] "histogram"
Generická funkce plot() vyhodnotí, že se jedná o histogram a proto vykreslí histogram
> plot(a)
Více o vlastnostech objektů si můžete přečíst v Základy informatiky pro biologyVýpočetní matematické systémy Výuka jazyka R Další příkazy v R Vlastnosti objektů.