[R] execute array of functions

Duncan Murdoch murdoch.duncan at gmail.com
Tue Feb 14 20:37:24 CET 2012


On 14/02/2012 2:23 PM, Nordlund, Dan (DSHS/RDA) wrote:
> >  -----Original Message-----
> >  From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> >  project.org] On Behalf Of Muhammad Rahiz
> >  Sent: Tuesday, February 14, 2012 11:03 AM
> >  To: x.r-help
> >  Subject: [R] execute array of functions
> >
> >  Hi all,
> >
> >  I'm trying to get the min and max of a sequence of number using a loop
> >  like the folllowing. Can anyone point me to why it doesn't work.
> >
> >  Thanks.
> >
> >  type 	<- c("min","max")
> >  n 	<- 1:10
> >  for (a in 1:2) 	  {
> >  print(type[a](n)) }
> >
> >
> >  --
> >  Muhammad
> >
>
> I am not sure why you are trying to use this approach in a loop, but you need to use the get() function if you want to do this.
>
> type<- c("min","max")
> n<- 1:10
> for (a in 1:2) 	  {
>    print(get(type[a])(n))
> }
>
> But, why not use min and max on n directly?

Or put min and max into the type vector, i.e.

type <- list(min, max)
n <- 1:10
for (a in 1:2) print(type[[a]](n))

Note that I need the double brackets [[a]], because type is a list.  
(You can use type <- c(min, max) with the same result, but
I find using list() explicitly is easier to understand.)

Duncan Murdoch



More information about the R-help mailing list