tapplySimpl function

More simplification in tapply() result

More simplification in tapply() result

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.

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.

Returns

If the above conditions are satisfied, the list returned from r <- tapply(X, INDEX, FUN, ...) is simplified into an array of rank 1+#{indices}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)
  • Maintainer: Martin Maechler
  • License: GPL (>= 2)
  • Last published: 2024-11-05