stack {base} | R Documentation

## Stack or Unstack Vectors from a Data Frame or List

### Description

Stacking vectors concatenates multiple vectors into a single vector along with a factor indicating where each observation originated. Unstacking reverses this operation.

### Usage

    stack(x, ...)
    stack.default(x, ...)
    stack.data.frame(x, select, ...)
    unstack(x, ...)
    unstack.default(x, form, ...)
    unstack.data.frame(x, form = formula(x), ...)

### Arguments

`x` | object to be stacked or unstacked
`select` | expression, indicating variables to select from a data frame
`form` | a two-sided formula whose left side evaluates to the vector to be unstacked and whose right side evaluates to the indicator of the groups to create. Defaults to `formula(x)` in `unstack.data.frame`.
`...` | further arguments passed to or from other methods.

### Details

The `stack` function is used to transform data available as separate columns in a data frame or list into a single column that can be used in an analysis of variance model or other linear model. The `unstack` function reverses this operation.

### Value

`unstack` produces a list of columns according to the formula `form`. If all the columns have the same length, the resulting list is coerced to a data frame.
`stack` produces a data frame with two columns

`values` | the result of concatenating the selected vectors in `x`
`ind` | a factor indicating from which vector in `x` the observation originated

### Author(s)

Douglas Bates

### See Also

`lm`, `reshape`

### Examples

    data(PlantGrowth)
    formula(PlantGrowth)         # check the default formula
    pg <- unstack(PlantGrowth)   # unstack according to this formula
    pg
    stack(pg)                    # now put it back together
    stack(pg, select = -ctrl)    # omitting one vector

[Package Contents]