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 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.
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 isJust 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 at 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.
Hi Hao, Ok. Sorry for my last post. bests milton On Tue, Dec 29, 2009 at 3:08 PM, Hao Cen <hcen@andrew.cmu.edu> 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 > > 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<http://www.r-project.org/posting-guide.html> > and provide commented, minimal, self-contained, reproducible code. >[[alternative HTML version deleted]]