2016-06-07 33 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」。