2013-07-10 90 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)