关于R

时间:2015-09-27 12:03:03

标签: r xts zoo s4

我想使用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?

非常感谢!!

帕特里克

0 个答案:

没有答案