我很难从S4类定义中识别出从较早的软件包中得到的类。我不断出错

Error in makePrototypeFromClassDef(properties, ClassDef, immediate, where) :
  in making the prototype for class "Tsvmm" elements of the prototype failed to
  match the corresponding slot class: dates (class "dates" )
In addition: Warning message:
undefined slot classes in definition of "Tsvmm": dates(class "dates")


一个可重现的示例:

require(chron)

setClass(
  Class="Tsvmm",
  representation=representation(
      data  = "data.frame",
      dates = "dates"
  ),
  prototype=prototype(
      data  = data.frame(),
      dates = chron(0)
  )
)


尝试class(chron(0))时,答案是"dates" "times"。使用is.numeric(chron(0)),答案是TRUE。但是,当我将广告位日期的类别设置为"numeric"时,会出现相同的错误而没有警告消息。

我感觉自己正在忽略一些明显的问题,但是在文档中却找不到。有人指针吗?

PS:我知道chron软件包至少很特殊,但是我有充分的理由使用它。另外,其他软件包很可能会出现此问题。请参阅此示例以了解一般性问题。因此,请不要告诉我使用Date或POSIXt类。我现在正在使用这种技巧。

最佳答案

似乎您需要setOldClass才能使方法相信日期是一个真实的类。

07-24 09:52