0

I am defining a reference class as follow:

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

And then I use the following code:

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

there's an error message that "cannot assign data.frame" class by "zoo" I then modified the code:

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

But, after library(zoo), or library(xts), I will get a following message:

 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 

I really need to use the edata as an "xts" object in this class, because I would use so many functions that have already written for xts!

is there any way to deal with this problem?

nrussell
  • 18,382
  • 4
  • 47
  • 60
Benjamin
  • 93
  • 11

1 Answers1

1

One can specify the class as "ANY"

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

Then one can assign an "xts" object to "edata".

Benjamin
  • 93
  • 11