aggregate-methods {hyperSpec}R Documentation

aggregate

Description

Computes summary statistics for subsets of a hyperSpec object.

Usage

## S4 method for signature 'hyperSpec':
aggregate(x, by, FUN, ..., out.rows = NULL,
    append.rows = NULL,
    short = NULL, date = NULL, user = NULL)

Arguments

x a hyperSpec object
by grouping for the rows of x@data.
Either a list containing an index vector for each of the subgroups or a vector that can be split in such a list.
FUN function to compute the summary statistics
out.rows number of rows in the resulting hyperSpec object, for memory preallocation.
append.rows If more rows are needed, how many should be appended?
Defaults to 100 or an estimate based on the percentage of groups that are still to be done, whatever is larger.
... further arguments passed to FUN
short, date, user aguments passed to logentry

Details

aggregate applies FUN to each of the subgroups given by by. It combines the functionality of aggregate, tapply, and ave for hyperSpec objects.

aggregate avoids splitting x@data.

FUN does not need to return exactly one value. The number of returned values needs to be the same for all wavelengths (otherwise the result could not be a matrix), see the examples.

If the initially preallocated data.frame turns out to be too small, more rows are appended and a warning is issued.

Value

A hyperSpec object with an additional column @data$.aggregate tracing which group the rows belong to.

Author(s)

C. Beleites

See Also

tapply, aggregate, ave

Examples


## make some "spectra"
spc <- new ("hyperSpec", spc = sweep (matrix (rnorm (10*20), ncol = 20), 1, (1:10)*5, "+"))

## 3 groups
color <- c("red", "blue", "black")
by <- as.factor (c (1, 1, 1, 1, 1, 1, 5, 1, 2, 2))
by
plot (spc, "spc", col = color[by])

## Example 1: plot the mean of the groups 
plot (aggregate (spc, by, mean), "spc", col = color, add = TRUE,
      lines.args = list(lwd = 3, lty = 2))

## Example 2: FUN may return more than one value (here: 3)
plot (aggregate (spc, by, mean_pm_sd), "spc",
      col = rep(color, each = 3), lines.args = list(lwd = 3, lty = 2)) 

## Example 3: aggregate even takes FUN that return different numbers of
##            values for different groups 
plot (spc, "spc", col = color[by])

weird.function <- function (x){
   if (length (x) == 1)
      x + 1 : 10
   else if (length (x) == 2)
      NULL
   else
      x [1]
}

agg <- aggregate (spc, by, weird.function)
agg$.aggregate 
plot (agg, "spc",  add = TRUE, col = color[agg$.aggregate],
      lines.args = list (lwd = 3, lty = 2))

[Package hyperSpec version 0.95 Index]