[R] execute array of functions

Nordlund, Dan (DSHS/RDA) NordlDJ at dshs.wa.gov
Tue Feb 14 20:36:28 CET 2012


> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Nordlund, Dan (DSHS/RDA)
> Sent: Tuesday, February 14, 2012 11:24 AM
> To: r-help at r-project.org
> Subject: Re: [R] execute array of functions
> 
> > -----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?
> 
> 

I probably should have pointed out that the reason your code doesn't work is that type is a vector of character strings with function names, not the actual functions.  Another approach would be to store the actual functions, rather than the names in type.  So something like 

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


But maybe someone more expert can tell you the 'best' or more R-ish way of accomplishing what you want. 

Dan

Daniel J. Nordlund
Washington State Department of Social and Health Services
Planning, Performance, and Accountability
Research and Data Analysis Division
Olympia, WA 98504-5204




More information about the R-help mailing list