Learn R Programming

plyr (version 1.5.2)

vaggregate: Vector aggregate.

Description

Vector aggregate.

Usage

vaggregate(.value, .group, .fun, ..., .default,
    .n=nlevels(.group))

Arguments

.value
vector of values to aggregate
.group
grouping vector
.fun
aggregation function
...
other arguments passed on to .fun
.default
default value used for missing groups. This argument is also used as the template for function output.
.n
total number of groups

Details

This function is somewhat similar to tapply, but is designed for use in conjunction with id. It is simpler in that it only accepts a single grouping vector (use id if you have more) and uses vapply internally, using the .default value as the template.

vaggregate should be faster than tapply in most situations because it avoids making a copy of the data.

Examples

Run this code
# Some examples of use borrowed from ?tapply
n <- 17; fac <- factor(rep(1:3, length = 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))

Run the code above in your browser using DataLab