Pregunta

Quiero rbind.zoo dos objetos zoológico juntos. Cuando estaba probando me encontré con el problema siguiente (?) ...

Nota: El abajo es un ejemplo, es evidente que ningún punto a ella aparte de ser ilustrativos. Tengo un objeto zoológico, llamarlo, 'X'. Quiero dividirlo en dos partes y luego rbind.zoo juntos. Cuando lo comparo con el objeto original, entonces da all.equal diferencias.

Parece que el atributo 'clase $' es diferente, pero no puedo ver cómo o por qué. Está hago estos objetos XTS luego las obras all.equal como se esperaba.

es decir. .....

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 da la siguiente diferencia:

"Atributos: >"

¿Fue útil?

Solución

Sí, es posible que haya encontrado un error que hay en cuanto a la manipulación de atributos. Por otro lado, a quién le importa? c y d son efectivamente igual:

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> 

La inspección de los objetos da nada de distancia:

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"

Le sugiero que envíe un correo educado a los mantenedores de zoo que ilustran el caso.

Otros consejos

R no trata el atributo TZONE de POSIXct objetos de forma coherente. zoológico no tiene nada que ver con esto. Puede encontrar ejemplos de este tipo, incluso sin el uso de zoológico en absoluto. c y d en el código original en realidad son iguales excepto para el atributo TZONE.

Si se quita el atributo tzone continuación, C y D será igual:

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

En el caso de zoológico, ya que es compatible con casi cualquier clase de tiempo que podría considerar el uso de una clase diferente si el tiempo no es necesario husos horarios. Las zonas horarias solo complican las cosas sin una buena razón si no los necesita. En el ejemplo que aquí podríamos haber utilizado la clase Date, por ejemplo.

Leer News R 4/1 para más.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top