Reassemble Groups
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.
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 'z-scores' 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 within-group 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)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.