On Sep 27, 2009, at 11:07 PM, Rolf Turner wrote:


On 28/09/2009, at 3:36 PM, trumpetsaz wrote:


I am trying to write a function that will have an input of a vector of
functions. Here is a simplistic example.
sumstats <- c(mean,sd)
sumstats[1]
#Gives this error
#> sumstats[1]
#[[1]]
#function (x, ...)
#UseMethod("mean")
#<environment: namespace:base>

I thought about restricting the input to character variables such as the
following
sumstats2 <- c("mean","sd")
Is there a way to change "mean" to the function mean?

You *can't* have a vector of functions, as far I know.  The entries
of a vector must be (numeric, character, or logical) scalars.

You *can* have a *list* of functions; this might be the way you
want to go.

To ``change "mean" to the function mean'' --- set ?get.


That is prezactly what he created:

> umstats <- c(mean,sd)
>
> str(umstats)
List of 2
 $ :function (x, ...)
 $ :function (x, na.rm = FALSE)


And what's more "it works" if it is accessed with "[[":

> umstats[[1]](c(1,2,3,4,5))
[1] 3



David Winsemius, MD
Heritage Laboratories
West Hartford, CT

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to