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


______________________________________________
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