我创建了一个方法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
}
当我向它发送该类型的对象时,这非常正常。假设我有一个保存在listOfObjects中的myObject列表。
如果我这样做:
> myMethod(listOfObjects[[1]])
执行“我的代码”时,一切都按预期工作。但是,如果我发送一个相同对象的列表,它会命中我的默认方法:
> myMethod(listOfObjects[1:10])
我明白了:
[1] "Generic base function; does nothing."
我能做些什么让myMethod
轻松运行我列表中的每个对象?我的列表可能非常大,所以我想使用R的内置向量函数,而不是使用'慢'for
循环。
答案 0 :(得分:2)
首先,你的短语 R内置处理函数的能力是非常模糊的。
据我了解,它是lapply
。
简单地说:
lapply(objs, myMethod)
如果你想要一个获取对象列表的函数,你可以定义一个:
setMethod("myMethod",
signature = c("list"),
definition = function(objs){
lapply(objs, myMethod)
})