unlist {base}R Documentation

Flatten Lists


Given a list structure x, unlist simplifies it to produce a vector which contains all the atomic components which occur in x.


unlist(x, recursive = TRUE, use.names = TRUE)


x A list or vector.
recursive logical. Should unlisting be applied to list components of x?
use.names logical. Should names be preserved?


unlist is generic: you can write methods to handle specific classes of objects, see InternalMethods.

If recursive = FALSE, the function will not recurse beyond the first level items in x.

x can be a vector, but then unlist does nothing useful, not even drop names.

By default, unlist tries to retain the naming information present in x. If 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.

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,)


A vector of an appropriate mode to hold the list components.


Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

See Also

c, as.list.


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

[Package base version 2.1.0 Index]