Domanda

Voglio rbind.zoo due oggetti zoo insieme. Quando stavo testando mi sono imbattuto nel seguente problema (?) ...

Nota: Il sotto è un esempio, v'è chiaramente alcun punto ad esso oltre ad essere illustrativi. Ho un oggetto zoo, lo chiamano, 'X'. Voglio spezzare in due parti e poi rbind.zoo insieme. Quando mi paragono all'oggetto originale poi all.equal dà differenze.

Sembra che l'attributo '$ classe' diverso, ma non riesco a vedere come o perché. Sono io faccio queste XTS oggetti poi le opere all.equal come previsto.

vale a dire. .....

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 mi dà il seguente differenza:

"Attributi: >"

È stato utile?

Soluzione

Sì, si può avere trovato un bug non in termini di gestione degli attributi. D'altra parte, chi se ne frega? c e d sono effettivamente uguale:

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> 

Verifica gli oggetti dà via niente:

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"

vi consiglio di inviare una e-mail educato per i manutentori del zoo che illustrano il caso.

Altri suggerimenti

R non tratta l'attributo TZONE di POSIXct oggetti in modo coerente. zoo ha nulla a che fare con questo. Si può venire con esempi come questo, anche senza l'utilizzo di zoo a tutti. ced nel codice originale effettivamente sono uguali tranne per l'attributo TZONE.

Se si rimuove l'attributo TZONE poi ced sarà uguale:

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

Nel caso di zoo poiché supporta quasi ogni classe di tempo si potrebbe considerare l'utilizzo di una classe di tempo diverso se non hai bisogno di fusi orari. Fuso orario solo complicare le cose per nessuna buona ragione se non ne hanno bisogno. Nell'esempio qui avremmo potuto usato Data di classe, per esempio.

Leggi R Notizie 4/1 di più.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top