Vector aggregate.
vaggregate(.value, .group, .fun, ..., .default = NULL, .n = nlevels(.group))
.value |
vector of values to aggregate |
.group |
grouping vector |
.fun |
aggregation function |
... |
other arguments passed on to |
.default |
default value used for missing groups. This argument is also used as the template for function output. |
.n |
total number of groups |
vaggregate
should be faster than tapply
in most situations
because it avoids making a copy of the data.
# Some examples of use borrowed from ?tapply n <- 17; fac <- factor(rep(1:3, length.out = n), levels = 1:5) table(fac) vaggregate(1:n, fac, sum) vaggregate(1:n, fac, sum, .default = NA_integer_) vaggregate(1:n, fac, range) vaggregate(1:n, fac, range, .default = c(NA, NA) + 0) vaggregate(1:n, fac, quantile) # Unlike tapply, vaggregate does not support multi-d output: tapply(warpbreaks$breaks, warpbreaks[,-1], sum) vaggregate(warpbreaks$breaks, id(warpbreaks[,-1]), sum) # But it is about 10x faster x <- rnorm(1e6) y1 <- sample.int(10, 1e6, replace = TRUE) system.time(tapply(x, y1, mean)) system.time(vaggregate(x, y1, mean))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.