2013-07-02 2 views
3

Ссылки. Кажется, что в классах классов допускаются базовые/стандартные типы объектов. Например, я хочу объект Паралипоменон, но это не позволяет мне определить его:Определение нестандартных классов в объекте Reference Class

> 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) 

ответ

8

Я думаю, что вы должны зарегистрировать нестандартный класс, используя 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) 
Смежные вопросы