2013-07-02 25 views
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方法,但顯然這不是會有兩種方式:我認爲你需要使用setOldclass先登記您的非標準類

> 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

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)