2013-07-10 93 views
1

调用的乐趣,我想实现一个泛型函数:R:包装函数(乐趣,参数)与“展开”参数

call_with_parameters <- function(func, parameters) { 
    call func with parameters and return result 
} 

调用给定函数FUNC(列为放慢参数)与一个参数列表,所以func一定不能应付通用参数(如...)。由于回电话

例如来电:mean(x=1:4, na.rm=TRUE)

call_with_parameters(mean, list(x=1:4, na.rm=TRUE)) 

有什么建议?

+3

你找'do.call'? – agstudy

+0

@agstudy - 为什么不作为答案发布? – Dason

+0

@agstudy我第二个Dason这应该是答案...停止懒惰:-) – dickoa

回答

3

我认为,您正在寻找do.call来构建函数调用。

函数构建呼叫,并立即对其进行评估(您还可以使用call构建的呼叫,然后再使用eval例如对其进行评估)。 do.call从包含要评估函数的所有参数的模式“list”的对象中取参数 。例如:

do.call("mean", list(x=1:4,na.rm=TRUE)) 

等同于:

mean(x=1:4,na.rm=TRUE)