3

参照クラスは、許可されている基本/標準オブジェクト タイプのみを受け入れるようです。たとえば、 chron オブジェクトが必要ですが、これでは定義できません。

> newclass <- setRefClass("newclass",fields=list(time="chron"))
Error in refClassInformation(Class, contains, fields, methods, where) : 
  class "chron" for field 'time' is not defined

これは制限ですか、それとももっと良い方法がありますか? メソッドで設定してみましたinitializeが、明らかにこれも方法ではありません。

> newclass <- setRefClass("newclass",
+                         fields=list(time="numeric"),
+                         methods=list(initialize=function() time <<- as.chron(time)))
library(chron)
> x <- newclass(time=as.chron("2011-01-01"))
Error in .Object$initialize(...) : unused argument (time = 14975)
4

1 に答える 1

9

最初に非標準クラスを登録する必要があると思いますsetOldclass

require(chron)
dts <- dates(c("05/20/13", "06/10/13"))
tms <- times(c("19:30:00", "22:30:05"))

setOldClass("chron")
newclass <- setRefClass("newclass",
                        fields = list(time = "chron"))

mydate <- newclass(time = chron(dates = dts, times = tms))
mydate$time
## [1] (05/20/13 19:30:00) (06/10/13 22:30:05)
于 2013-07-02T06:46:18.323 に答える