R: Flatten Lists

unlist {base} | R Documentation

## Flatten Lists

### Description

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

### Usage

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

### Arguments

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

### Details

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

### Value

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

### See Also

`c`, `as.list`.

### Examples

    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

[Package Contents]