On 29/12/2009 3:08 PM, Hao Cen wrote:
Hi,

I wonder how to pass several functions and their arguments as arguments to
a function. For example, the main function is

f = function(X  ) {
   process1(X)
   ...


   process2(X)
}

I have a few functions that operate on X, e.g. g1(X, par1), g2(X, par2),
g3(X, par3).  par1, par2 and par3 are parameters and of different types. I
would like to pass g1, g2, g3 and their arguments to f and g1, g2, g3 may
appear to be in different orders. So that final effect of the passing is

Just pass them.  If you know there are three functions, set up f as

f <- function(X, f1, f2, f3, par1, par2, par3) {
  process1(X)
  f1(X, par1)
  f2(X, par2)
  f3(X, par3)
  process2(X)
}

and call it as

f(X, g1, g2, g3, par1, par2, par3)

If you don't know how many functions there will be, put them in a list:

f <- function(X, fs, pars) {
  process1(X)
  for (i in 1:length(fs)) fs[[i]](pars[[i]])
  process2(X)
}

and call it as

f(X, list(g1, g2, g3), list(par1, par2, par3))

Duncan Murdoch


f = function(X  ) {
   process1(X)
   g1(X, par1)
   g2(X, par2)
   g3(X, par3)
   process2(X)
}

If I pass g2(X, par2),g3(X, par3), g1(X, par1) to f, I would expect to get
the effect of
f = function(X  ) {
   process1(X)
   g2(X, par2)
   g3(X, par3)
   g1(X, par1)
   process2(X)
}

Appreciate any suggestions.

thanks

Jeff


ps please ignore my previous blank subject email. It was accidentally sent
before the letter was completed.

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

______________________________________________
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