将省略号参数传递给两个不同的函数?

时间:2013-05-27 14:04:50

标签: r

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

> 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)

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

1 个答案:

答案 0 :(得分:5)

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

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))

(未经测试,但你得到了要点)