如何包装一个只接受单个元素的函数来使它成为一个列表

时间:2010-04-26 14:18:05

标签: r

说我有一个功能交给我,我无法改变,必须按原样使用。该函数以

的形式获取多个对象
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的输出。这样做的正确方法是什么?

感谢。

1 个答案:

答案 0 :(得分:12)

您正在寻找do.call

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