【问题标题】:how to wrap a function that only takes individual elements to make it take a list [duplicate]如何包装一个只需要单个元素的函数以使其成为一个列表[重复]
【发布时间】:2010-04-26 14:18:05
【问题描述】:

假设我有一个函数交给我,我无法更改并且必须按原样使用。这个函数接受几个对象,形式为

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 的输出。这样做的正确方法是什么?

谢谢。

【问题讨论】:

    标签: r


    【解决方案1】:

    您正在寻找do.call:

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

    【讨论】:

    • 谢谢。没有必要重新发明轮子。 :)
    猜你喜欢
    • 1970-01-01
    • 2020-07-21
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 2011-11-06
    • 1970-01-01
    相关资源
    最近更新 更多