Given a list structure
unlist simplifies it to
produce a vector which contains all the atomic components
which occur in
unlist(x, recursive = TRUE, use.names = TRUE)
- an R object, typically a list or vector.
- logical. Should unlisting be applied to list
- logical. Should names be preserved?
recursive = FALSE, the function will not recurse beyond the
first level items in
Factors are treated specially. If all non-list elements of
are factors (or ordered factors) then the result will be a factor with
levels the union of the level sets of the elements, in the order the
levels occur in the level sets of the elements (which means that if
all the elements have the same level set, that is the level set of the
x can be an atomic vector, but then
unlist does nothing useful,
not even drop names.
unlist tries to retain the naming
information present in
use.names = FALSE all
naming information is dropped.
Where possible the list elements are coerced to a common mode during the unlisting, and so the result often ends up as a character vector. Vectors will be coerced to the highest type of the components in the hierarchy NULL < raw < logical < integer < double < complex < character < list < expression: pairlists are treated as lists.
A list is a (generic) vector, and the simplified vector might still be
a list (and might be unchanged). Non-vector elements of the list
(for example language elements such as names, formulas and calls)
are not coerced, and so a list containing one or more of these remains a
list. (The effect of unlisting an
lm fit is a list which
has individual residuals as components.)
unlist(x) now returns
x unchanged also for
x, instead of signalling an error in that case.
NULLor an expression or a vector of an appropriate mode to hold the list components.The output type is determined from the highest type of the components in the hierarchy NULL < raw < logical < integer < double < complex < character < list < expression, after coercion of pairlists to lists.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
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) # a character vector l2 <- list(a = "a", b = as.name("b"), c = pi+2i) unlist(l2) # remains a list 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)))
[Video tutorial on unlist](https://linkedin-learning.pxf.io/rweekly_unlist) ```r # lists can contain lists a.list <- list(letters[1:3]) # contains "a", "b", "c" another.list <- list(1:5) # contains 1,2,3,4,5 still.another.list <- list(TRUE,FALSE,TRUE) I.am.a.list <- list(a.list,another.list,still.another.list) I.am.a.list unlist(I.am.a.list) unlist(I.am.a.list, recursive = FALSE) # named list elements (aka key/value) I.am.a.list <- list(bob=c(6.2,150),bill=c(5.4,110)) I.am.a.list unlist(I.am.a.list) unlist(I.am.a.list, use.names = FALSE) ```