Rozložení seznamu (list)
Popis
Funkce unlist zjednoduší strukturu seznamu x do vektoru, který obsahuje všechny atomické komponenty původně obsažené v x .
Použití
unlist(x, recursive = TRUE, use.names = TRUE)
Argumenty
x |
R objekt, typicky seznam (list) nebo vektor. |
recursive |
logická hodnota. Má být rozložení aplikováno i na podseznamy seznamu x ? |
use.names |
logická hodnota. Mají být zachovány názvy? |
Podrobnosti
Funkce unlist je generická: lze vytvářet metody pro manipulaci se specifickými třídami objektů, viz InternalMethods. Např. funkce relist s metodou unlist pro objekty třídy relistable .
V případě, že recursive = FALSE , funkce nerozkládá vnořené seznamy nižších úrovní a zpracuje pouze nejvyšší úroveň seznamu.
Faktory jsou zpracovány speciálním způsobem. Pokud jsou všechny prvky x faktory (příp. seřazené faktory), je výsledkem faktor s úrovněmi danými sjednocením množin faktorových úrovní původních prvků v takovém pořadí, v jakém se vyskytují v původních množinách faktorových úrovní původních prvků (což znamená, že pokud mají všechny původní prvky stejnou množinu faktorovýh úrovní, je tato množina současně výslednou množinou úrovní faktorů).
x může být atomický vektor, ovšem v takovém případě funkce unlist neprovádí nic kromě odstranění názvů.
V základním nastavení se funkce unlist pokouší zachovat informaci o názvech v x . Pokud use.names = FALSE , jsou odstraněny veškeré informace o názvech.
Poku je to možné, jsou všechny prvky budoucího vektoru převedeny na stejný datový typ, což často vede k tomu, že rozklad seznamu končí textovým vektorem. Podle možností jsou totiž vektory změněny na nejnižší nutný typ pro zachování obsahu v hierarchii NULL < raw < logical < integer < double < complex < character < list < expression. Párové seznamy jsou zpracovávány jako seznamy.
Seznam je (generický) vektor a zjednodušený vektor může být stále seznamem (a může být dokonce po průchodu funkcí nezměněn). Nevektorové komponenty seznamu (například prvky jazyka jako jsou názvy, vzorce a volání) nejsou změněny a tedy seznam, který obsahuje jeden nebo více takových komponent, zůstane seznamem. (Efektem rozkladu seznamu lm prokladu je vytvoření seznamu obsahujcího jednotlivá rezidua modelu jako prvky.) Povšimněte si, že unlist(x) v případě nevektorového x vrací nezměněné x namísto chybové hlášky.
Hodnota
NULL nebo výraz nebo vektor příslušného typu pro zachování komponent seznamu.
Datový typ je určen podle nejvyššího z typů jednotlivých komponent v hierarchii NULL < raw < logical < integer < double < complex < character < list < expression při změně párových seznamů na seznamy.
Reference
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Viz také
c, as.list, relist.
Příklady
unlist(options())
unlist(options(), use.names = FALSE)
l.ex <- list(a = list(1:5, LETTERS[1:5]), b = "Z", c = NA)
unlist(l.ex, recursive = FALSE)
unlist(l.ex, recursive = TRUE)
l1 <- list(a = "a", b = 2, c = pi+2i)
unlist(l1) # textovy vektor
l2 <- list(a = "a", b = as.name("b"), c = pi+2i)
unlist(l2) # zustava seznamem
ll <- list(as.name("sinc"), quote( a + b ), 1:10, letters, expression(1+x))
utils::str(ll)
for(x in ll)
stopifnot(identical(x, unlist(x)))
|