2016-06-07 35 views
0

我定义引用类如下:在R参考类,如何定义字段“XTS”对象

test = setRefClass(
    Class = "test", 
    fields = c(
    edata = "data.frame" 
) 
) 
test$methods(
    getdata = function(newdata,...){ 
    edata <<- newdata 
    } 
) 

然后我用下面的代码:

test1 = test$new() 
x = xts(data.frame(val=1, val2=2), order.by=as.Date("2015-01-02")) 
test1$getdata(x) 

有一个错误信息由“动物园”,“不能分配data.frame”类 然后我修改了代码:

test = setRefClass(
    Class = "test", 
    fields = c(
    edata = "zoo" 
) 
) 

但是,后库(动物园),或库(XTS),我会得到以下信息:

Error in as(value, fieldClass, strict = FALSE) : 
    internal problem in as(): “xts” is(object, "zoo") is TRUE, but the metadata asserts that the 'is' relation is FALSE 

我真的需要使用EDATA为“XTS”对象在这个班,因为我会用如此多的功能已经写入xts!

有没有办法解决这个问题?

回答

1

一个可以指定类作为 “ANY”

test = setRefClass(
    Class = "test", 
    fields = c(
    edata = "ANY" 
) 
) 

然后一个可以分配一个 “XTS” 对象 “EDATA”。