2016-06-07 25 views
0

ich eine Referenzklasse wie folgt bin definieren:In R Referenzklasse, wie Felder als „XTS“ definieren Objekte

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

Und dann verwende ich den folgenden Code:

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

gibt es eine Fehlermeldung, dass die Klasse von "Zoo" "kann nicht data.frame zuweisen" I modifiziert dann den Code:

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

Aber, Nach Bibliothek (Zoo) oder Bibliothek (XTS), werde ich eine folgende Meldung:

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 

Ich brauche zu verwenden, um die edata als „XTS“ Objekt in dieser Klasse wirklich, weil ich so viele Funktionen nutzen würde das haben schon für xts geschrieben!

Gibt es eine Möglichkeit, mit diesem Problem umzugehen?

Antwort

1

Man kann angeben, die Klasse als "ANY"

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

Dann kann man eine "XTS" Objekt "edata" zuweisen.