【发布时间】:2014-09-09 22:33:43
【问题描述】:
在 R 中,将泛型的新方法包含在另一个包中的最简单方法是什么?例如,“nlme”包有一个名为“getData”的泛型,其中包含用于“lme”和“nls”类对象的方法。我只想在自己的包中为“lm”类对象添加一个方法。
【问题讨论】:
标签: r class generics methods package
在 R 中,将泛型的新方法包含在另一个包中的最简单方法是什么?例如,“nlme”包有一个名为“getData”的泛型,其中包含用于“lme”和“nls”类对象的方法。我只想在自己的包中为“lm”类对象添加一个方法。
【问题讨论】:
标签: r class generics methods package
如果您想从nlme 向现有S3 泛型添加另一个方法,例如getData,只需创建一个名为getData.classname 的函数。例如,假设我有一个“foo”类的特殊对象
z <- structure(5, class="foo")
我只是定义
getData.foo<-function(x, ...) {
unclass(x)+5
}
然后当我打电话时
library(nlme)
getData(z)
#[1] 10
我的自定义函数被调用。这一切都是为了正确命名你的函数。就是这样。
【讨论】:
export(as.data.table.xts) 而不是S3method(as.data.table.xts),这是一个问题/不寻常吗?
S3method(as.data.table, xts)。
export(...),即使在所需的包中存在泛型