我想使用Zoo的index
函数,同时也使index
通用,并且在传入我的特定S4对象时具有自定义版本。目前,当我在我的S4对象中调用index
作为我的包的一部分构建的另一个函数时,它很好 - 我的自定义index
方法被分派到。但是当我尝试在控制台中的S4对象上使用index
时,会将其发送到动物园版本。
所以说我有一个包" someTest",有一个R文件,包含:
setOldClass("xts")
TimeSeries = setClass("TimeSeries",slots=c(
ts = "xts"
))
setGeneric("index")
setMethod("index","TimeSeries",
function(x,...) {
7
})
func = function(ob) {
index(ob)
}
NAMESPACE文件包含以下行:
importFrom(zoo,index)
DESCRIPTION文件包含以下行:
Imports:
zoo,
xts
我构建了包。我现在在控制台中做:
> library(zoo);library(xts);library(someTest)
> example = xts(1,order.by=as.Date("2013-01-01"))
> timeSeriesExample = new("TimeSeries",ts=example)
> index(example)
[1] "2013-01-01"
> index(timeSeriesExample) # A
[1] 1
> func(timeSeriesExample)
[1] 7
> someTest::index(timeSeriesExample)
[1] 7
我期待标有" A"还输出7 - 即已分派到我的index
方法。但相反,它似乎是采用Zoo的index
方法。
基于我认为会发生的事情,以及实际发生的事情,有人可以向我解释这里发生了什么,以及我对S4仿制品/方法和环境的误解是什么?此外,我需要改变什么来制作线" A"还输出7?
非常感谢!!
帕特里克