[R] pass functions and arguments to function
Duncan Murdoch
murdoch at stats.uwo.ca
Tue Dec 29 22:57:03 CET 2009
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 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.
More information about the R-help
mailing list