Question

Je veux rbind.zoo deux objets de zoo ensemble. Quand je testais je suis tombé sur la question suivante (?) ...

Note: Ce qui suit est un exemple, il n'y a manifestement pas de point à elle en plus d'être illustrative. J'ai un objet zoo, appeler, « X ». Je veux casser en deux parties, puis les rbind.zoo ensemble. Quand je compare à l'objet d'origine, alors all.equal donne des différences.

Il semble que l'attribut « classe $ » diffère, mais je ne vois pas comment ou pourquoi. Je SORTE ces objets XTS alors les travaux de all.equal comme prévu.

i.e.. .....

X.date <- as.POSIXct(paste("2003-", rep(1:4, 4:1), 
                     "-", sample(1:28, 10, replace = TRUE), sep = ""))

X <- zoo(matrix(rnorm(24), ncol = 2), X.date)

a <- X[c(1:3), ]      # first 3 elements

b <- X[c(4:6), ]      # second 3 elements

c <- rbind.zoo(a, b)  # rbind into an object of 6 elements

d <- X[c(1:6), ]      # all 6 elements

all.equal(c, d)       # are they equal?

~~~~

all.equal me donne la différence suivante:

"Attributs: >"

Était-ce utile?

La solution

Oui, vous avez trouvé un bug il en termes de traitement des attributs. D'autre part, qui se soucie? c et d sont effectivement égaux:

R> c - d

2003-01-07 0 0
2003-01-15 0 0
2003-01-17 0 0
2003-01-18 0 0
2003-02-17 0 0
2003-02-22 0 0
R> 

les objets donne Inspecter rien de suite:

R> str(c)
‘zoo’ series from 2003-01-07 to 2003-02-22
  Data: num [1:6, 1:2] 0.79 -0.731 1.574 -0.694 0.358 ...
  Index:  POSIXct[1:6], format: "2003-01-07" "2003-01-15" 
      "2003-01-17" "2003-01-18" "2003-02-17" "2003-02-22"
R> str(d)
‘zoo’ series from 2003-01-07 to 2003-02-22
  Data: num [1:6, 1:2] 0.79 -0.731 1.574 -0.694 0.358 ...
  Index:  POSIXct[1:6], format: "2003-01-07" "2003-01-15" 
      "2003-01-17" "2003-01-18" "2003-02-17" "2003-02-22"

Je vous suggère d'envoyer un courrier poli aux mainteneurs de zoo illustrant le cas.

Autres conseils

R ne traite pas l'attribut tzone des objets POSIXct toujours. zoo n'a rien à voir avec cela. Vous pouvez trouver des exemples comme celui-ci, même sans utiliser le zoo du tout. c et d dans le code original sont en fait égale à l'exception de l'attribut tzone.

Si vous supprimez l'attribut tzone alors c et d sera égal:

attr(X.date, "tzone") <- NULL  ##### add after defining X.date

Dans le cas du zoo car il supporte à peu près toutes les classes de temps, vous pouvez envisager d'utiliser une classe de temps différente si vous ne avez pas besoin de zones de temps. Les fuseaux horaires compliquent les choses juste pour aucune bonne raison si vous ne les avez pas besoin. Dans l'exemple, nous aurions pu utiliser la classe Date, par exemple.

Lire R Nouvelles 4/1 pour plus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top