stack {utils}  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, ...)
## Default S3 method:
stack(x, drop=FALSE, ...)
## S3 method for class 'data.frame'
stack(x, select, drop=FALSE, ...)
unstack(x, ...)
## Default S3 method:
unstack(x, form, ...)
## S3 method for class 'data.frame'
unstack(x, form, ...)
Arguments
x 
a list or data frame to be stacked or unstacked. 
select 
an expression, indicating which variable(s) to select from a data frame. 
form 
a twosided 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 
drop 
Whether to drop the unused levels from the “ind” column of the return value. 
... 
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.
Note that stack
applies to vectors (as determined by
is.vector
): nonvector columns (e.g., factors) will be
ignored with a warning. Where vectors of different types are selected
they are concatenated by unlist
whose help page explains
how the type of the result is chosen.
These functions are generic: the supplied methods handle data frames
and objects coercible to lists by as.list
.
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

ind 
a factor indicating from which vector in 
Author(s)
Douglas Bates
See Also
Examples
require(stats)
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