2010-04-26 54 views
5

說我有一個函數交給我,我不能改變,必須使用原樣。此功能需要幾個對象,形式爲如何包裝一個功能,只需要單獨的元素,使其列表

oldFunction(object1, object2, object3, ...) 

其中...是其他參數。我想編寫一個包裝來獲取對象列表。我的想法是這樣的。

sjb.ListWrapper <- function(myList,...) { 
    lLen <- length(myList) 
    myStr <- "" 
    for(i in 1:lLen) { 
    myStr <- paste(myStr, "myList[[", i , "]],",sep="") 
    } 

    myCode <- paste("oldFunction(", myStr, "...)") 
    eval({myCode}) 
} 

但是,問題是我想從sweave中使用這個,我需要打印oldFunction的輸出。什麼是正確的方法來做到這一點?

謝謝。

回答

12

您正在尋找do.call

f <- function(x,y,z)x+y+z 
do.call(f,list(1,2,3)) 
[1] 6 
+0

謝謝。那麼不需要重新發明輪子。 :) – stevejb 2010-04-26 15:06:28

相關問題