Slovník | Vyhledávání | Mapa webu
 
Základy informatiky pro biologyVýpočetní matematické systémy Výuka jazyka R Datové tabulky a seznamy Podmnožiny seznamů

Logo Matematická biologie

Podmnožiny seznamů

K vypsání podmnožiny seznamu můžeme použít jednoduchých [] nebo dvojitých [[]] hranatých závorek. Jednoduchými závorkami uvádíme, které složky seznamu chceme získat. Jestliže jednotlivé složky seznamu nejsou pojmenovány, požadovanou složku specifikujeme jejím číslem. K výpisu více složek můžeme použít operátoru : nebo funkce c(). Jestliže jsou složky seznamu pojmenovány, požadované prvky specifikujeme jejich názvy v uvozovkách. Podmnožina seznamu vytvořená pomocí jednoduchých hranatých závorek je opět typu seznam.

Naopak, příkaz pro vytváření podmnožiny pomocí dvojitých hranatých závorek vrací objekt takového typu, jakým byl při definování seznamu. V tomto případě je na každou složku odkazováno jednotlivě, nepoužívá se proto operátor : ani funkce c(). Stejně jako u jednoduchých hranatých závorek, na každou složku je odkazováno jejím číslem, má-li požadovaná složka název, můžeme na ni odkazovat jejím názvem v uvozovkách nebo můžeme použít operátoru $.

> l <- list(barva=c("cervena", "modra", "bila"), matrix(1:4, 2),  data.frame(Petr=sample(5,

+ replace=T), Pavel=1:5, row.names=c("po", "ut", "st", "ct", "pa")))
> l["barva"]

$barva
[1]    "cervena"    "modra"    "bila"

> typeof(l["barva"])    příkaz typeof() určí typ svého argumentu
[1]    "list"
> l[[2]]

 
 [,1]
 [,2]
[1,]
1
3
[2,]
2
4
> typeof(l[[2]])
[1]    "integer"
> typeof(l$barva)
[1]    "character"

Protože datové tabulky jsou speciálním případem seznamů, řádky a/nebo sloupce tabulky dat mohou být získány pomocí [], [[]] a/nebo operátoru $. Datové tabulky mohou být považovány i za zobecněné matice, k vytvoření podmnožiny můžeme proto použít [,].

> tab <- data.frame(cervena=c(1,2,3), modra=c(3,6,0), bila=c(2,5,1), row.names=c("pondeli",
+ "utery", "streda"))
> tab[1]
 
 cervena
pondeli
1
utery
2
streda
3
> typeof(tab[1])
[1]    "list"
> tab[[1]]    ekvivalentní příkaz příkazům tab[["cervena"]] a tab$cervena
[1]    1    2    3
> typeof(tab[[1]]); typeof(tab[["cervena"]]; typeof(tab$cervena))
[1]    "double"
[1]    "double"
[1]    "double"
> tab["utery", "bila"]
[1]    5

K výběru podmnožiny datové tabulky slouží i příkaz subset(x, ). Argument x specifikuje název datové tabulky, z níž podmnožinu vybíráme. Argument subset specifikuje řádky vyhovující dané podmínce, přičemž hodnoty NA jsou brány jako FALSE. Argument select specifikuje sloupce, které chceme vypsat, můžeme použít funkce c(), operátoru : i operátoru - pro vynechání složek.

> subset(tab, subset=cervena==3, select=c(modra, bila))

 
 modra
 bila
streda
0
1

Funkce subset() vždy vrací tabulku dat, i když má jen jeden řádek nebo sloupec. K tomu, aby vrátila jen jednoduchý vektor, musíme za vlastní definici podmnožiny datové tabulky použít operátor $, za nímž následuje název sloupce:

> tab["pondeli", "cervena"]

[1]    1

> subset(tab, subset=cervena==1, select=cervena)

 
 cervena
pondeli
1
> subset(tab, subset=cervena==1, select=cervena)$cervena
[1]    1

 

 
vytvořil Institut biostatistiky a analýz Lékařské fakulty Masarykovy univerzity