unsplit  R Documentation 
unsplit
reverses the effect of split
.
unsplit(value, f, drop = FALSE, ...)
## Default S3 method:
unsplit(value, f, drop = FALSE, ...)
value 
a list of vectors or data frames compatible with a splitting of

f 
a ‘factor’ in the sense that 
drop 
logical indicating if levels that do not occur should be dropped
(if 
... 
further potential arguments passed to methods. 
unsplit
is a generic functions with a default method (Method dispatch
takes place based on the class of the first element of value
) working
with lists of vectors or data frames (assumed to have compatible structure,
as if created by split
). It puts elements or rows back in the
positions given by f
. In the data frame case, row names are obtained
by unsplitting the row name vectors from the elements of value
.
f
is recycled as necessary and if the length of x
is not a
multiple of the length of f
a warning is printed.
Any missing
values in f
are dropped together with the corresponding values of
x
.
Returns a vector or data frame for which split(x, f)
equals
value
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
cut
to categorize numeric values.
strsplit
to split strings.
require(stats); require(graphics)
n < 10; nn < 100
g < factor(round(n * runif(n * nn)))
x < rnorm(n * nn) + sqrt(as.numeric(g))
xg < split(x, g)
boxplot(xg, col = "lavender", notch = TRUE, varwidth = TRUE)
sapply(xg, length)
sapply(xg, mean)
### Calculate 'zscores' by group (standardize to mean zero, variance one)
z < unsplit(lapply(split(x, g), scale), g)
# or
zz < x
split(zz, g) < lapply(split(x, g), scale)
# and check that the withingroup std dev is indeed one
tapply(z, g, sd)
tapply(zz, g, sd)
### Data frame variation
# Notice that assignment form is not used since a variable is being added
g < airquality$Month
l < split(airquality, g)
l < lapply(l, transform, Oz.Z = scale(Ozone))
aq2 < unsplit(l, g)
head(aq2)
with(aq2, tapply(Oz.Z, Month, sd, na.rm=TRUE))
### Split a matrix into a list by columns
ma < cbind(x = 1:10, y = (4:5)^2)
split(ma, col(ma))
split(1:10, 1:2)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.