[R] Re ading Functions that are in a Vector

Rolf Turner r.turner at auckland.ac.nz
Mon Sep 28 06:05:24 CEST 2009


On 28/09/2009, at 4:30 PM, David Winsemius wrote:

>
> 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

Never ceases to amaze me how R can get it right in settings and
with syntaxes that you would think can't ***possibly*** work!

	cheers,

		Rolf Turner

######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}




More information about the R-help mailing list