2017-03-07 2 views
0

Considérez ce qui suit.xts les objets perdent la classe xts lors de la sous-affectation

junk1.xts <- xts(c(0:10), as.yearqtr("1975 Q1") + 0.25*(0:10)) 
junk2.xts <- xts(c(30:0), as.yearqtr("1970 Q1") + 0.25*(0:30)) 
junk2a.xts <- junk2.xts[index(junk1.xts),] 
class(junk1.xts) 
class(junk2.xts) 
class(junk2a.xts) 

Les deux premières déclarations de classe les résultats suivants:

[1] "xts" "zoo" 

mais le troisième résultats dans:

[1] "zoo" 

Pourquoi? Est-ce normal ou un bug? Quel est le meilleur moyen de l'empêcher et de préserver la classe xts pour le troisième objet?

+2

Je n'observe pas ce comportement inhabituel avec xts 0.10-0 – FXQuantTrader

Répondre

0

Je pense avoir trouvé le problème. J'essaye d'ajouter une capacité d'étiquetage, modélisée d'après celle de Hmisc, aux objets xts. Ce faisant, j'avais défini une fonction pour [.xts. Cela a fonctionné au départ, mais j'ai ensuite apporté quelques changements d'efficacité. L'un d'entre eux a brisé la fonction.

Nous sommes désolés pour tout inconvénient.

+0

Je serais intéressé de connaître votre cas d'utilisation. Il pourrait y avoir un moyen de faire ce que vous voulez sans écraser '[.xts'. Même si ce n'est pas le cas, rappelez-vous que le "x" dans xts signifie "eXtensible". Vous pouvez donc sous-classer xts et simplement remplacer la fonction '[.xts' pour faire ce que vous voulez. –

+0

Je commence un projet de recherche impliquant des analyses de séries temporelles, avec plusieurs types de séries chronologiques - agrégats macroéconomiques, indices de prix, etc. - provenant de sources disparates. Pour garder une trace des variables, j'incorpore des étiquettes et des unités dans des objets xts au niveau de l'objet et de la variable. Tous sont stockés sous la forme xtsAttributes. Au niveau de l'objet, ils incluent des items scalaires "label" et "units" qui s'appliquent à l'ensemble de l'objet xts; au niveau variable, ils incluent des listes de noms de variables (var.labels) et d'unités (unit.labels) – Gnosos