| 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 '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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.