
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")))
> 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]
> 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))
|
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)
> subset(tab, subset=cervena==1, select=cervena)$cervena
[1] 1
|