tapplySimpl: More simplification in tapply() result

View source: R/misc-goodies.R

tapplySimplR Documentation

More simplification in tapply() result

Description

For the case of more than two categories or indices (in INDEX), traditional tapply(*, simplify = TRUE) still returns a list when an array may seem more useful and natural. This is provided by tapplySimpl() if the function FUN() is defined such as to return a vector of the same length in all cases.

Usage

tapplySimpl(X, INDEX, FUN, ...)

Arguments

X

an atomic object, typically a vector. All these arguments are as in tapply() and are passed to tapply(..).

INDEX

list of (typically more than one) factors, each of same length as X.

FUN

the function to be applied. For the result to be simplifiable, FUN() must return a vector of always the same length.

...

optional arguments to FUN.

Value

If the above conditions are satisfied, the list returned from r <- tapply(X, INDEX, FUN, ...) is simplified into an array of rank 1 + \#\{indices\}, i.e., 1+length(INDEX); otherwise, tapplySimpl() returns the list r, i.e., the same as tapply().

Author(s)

Martin Maechler, 14 Jun 1993 (for S-plus).

See Also

tapply(*, simplify=TRUE).

Examples

  ## Using tapply() would give a list (with dim() of a matrix);
  ## here we get 3-array:

  data(esoph)
  with(esoph, {
       mima <<- tapplySimpl(ncases/ncontrols, list(agegp, alcgp),  range)
       stopifnot(dim(mima) == c(2, nlevels(agegp), nlevels(alcgp)))
       })
  aperm(mima)

sfsmisc documentation built on Aug. 10, 2023, 5:06 p.m.