2

我创建了一个myMethod接受对象myObject作为参数的方法。我希望能够将此方法传递给myObject. 我可以只使用一个for循环来单独传递每个对象,但我更喜欢使用 R 的内置处理函数的能力。

我创建了一个这样的方法:

setMethod("myMethod",
      signature = c("myObject"),
      definition = function(obj, ...){
          "some code"
      })

我在这里显示了一个默认方法:

myMethod <- function(obj, ...){
    print("Generic base function; does nothing.")
    obj    
}

当我向它发送该类型的对象时,这非常有效。假设我有一个 myObject 列表保存在 listOfObjects 中。

如果我做:

> myMethod(listOfObjects[[1]])

执行“我的代码”时,一切都按预期工作。但是,如果我改为向它发送相同对象的列表,它将达到我的默认方法:

> myMethod(listOfObjects[1:10])

我得到:

[1] "Generic base function; does nothing."

我可以做些什么myMethod来轻松地在列表中的每个对象上运行?我的列表可能非常大,所以我想使用 R 的内置向量函数而不是使用“慢”for循环。

4

1 回答 1

2

首先,您的短语R 内置的处理功能的能力非常模糊。在我的理解中,是lapply。很简单:

lapply(objs, myMethod)

如果你想要一个接受对象列表的函数,你可以定义一个:

setMethod("myMethod",
      signature = c("list"),
      definition = function(objs){
          lapply(objs, myMethod)
})
于 2013-11-11T10:01:58.887 回答