14

如何编写足够灵活的主函数以将额外的参数传递给多个函数?简单的尝试失败了:

> mainF <- function(f1,f2,...) {
+     f2( X=f1(...), ... )
+ }
> mainF(function(x) x, function(X, y) X*y, x=5, y=3)
Error in f2(X = f1(...), ...) : unused argument (x = 5)

通过检查形式并将省略号中的调用参数与每个函数的形式相匹配,我可以看到这是如何实现的。不过,有没有更好的方法?

4

1 回答 1

6

您可以将列表传递给其中一个子功能,即

mainF <- function(f1, f2, ..., args.f2 = list()) {
     do.call(f2, c(X=f1(...), args.f2))
}

mainF(function(x) x, function(X, y) X*y, x=5, args.f2 = list(y=3))

(未经测试,但你明白了要点)

于 2013-05-27T15:16:28.057 回答