aggregatinFuntion1 creates statistical summaries of one numerical vector that are formula aware.

aggregatingFunction1(
  fun,
  output.multiple = FALSE,
  envir = parent.frame(),
  na.rm = getOption("na.rm", FALSE),
  style = c("formula1st", "formula", "flexible")
)

Arguments

fun

a function that takes a numeric vector and computes a summary statistic, returning a numeric vector.

output.multiple

a boolean indicating whether fun returns multiple values

envir

an environment in which evaluation takes place.

na.rm

the default value for na.rm in the resulting function.

style

one of "formula1st", "formula2nd" or "flexible". In the first two cases, the first argument must be a formula or evaluate to an object. In the latter case, bare names will be converted into formulas.

Value

a function that generalizes fun to handle a formula/data frame interface.

Details

The logic of the resulting function is this: 1) If the first argument is a formula, use that formula and data to create the necessary call(s) to fun; (2) Else simply pass everything to fun for evaluation.

Note

Earlier versions of this function supported a "bare name + data frame" interface. This functionality has been removed since it was (a) ambiguous in some cases, (b) unnecessary, and (c) difficult to maintain.

Examples

if (require(mosaicData)) {
  foo <- aggregatingFunction1(base::mean)
  foo( ~ length, data = KidsFeet)
  base::mean(KidsFeet$length)
  foo(length ~ sex, data = KidsFeet)
} 
#>        B        G 
#> 25.10500 24.32105