Pergunta

Eu quero rbind.zoo dois objeto zoológico juntos. Quando eu estava testando me deparei com o seguinte problema (?) ...

Nota: O abaixo é um exemplo, há claramente nenhum ponto a ele além de ser ilustrativo. Eu tenho um objeto jardim zoológico, chamá-lo, 'X'. Eu quero dividi-lo em duas partes e, em seguida, rbind.zoo-los juntos. Quando eu compará-lo com o objeto original, em seguida, all.equal dá diferenças.

Parece que os difere atributo 'class $', mas eu não posso ver como ou por quê. É eu fazer essas XTS objetos, em seguida, as obras all.equal como esperado.

i. .....

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 dá o seguinte diferença:

"Atributos: >"

Foi útil?

Solução

Sim, você pode ter encontrado um bug existe em termos de manipulação de atributos. Por outro lado, quem se importa? c e d são efetivamente iguais:

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> 

Inspecionando os objetos não dá pistas:

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"

Eu sugiro que você envie um e-mail educado para os mantenedores de zoo ilustram o caso.

Outras dicas

R não trata o atributo TZONE de POSIXct objetos de forma consistente. zoológico tem nada a ver com isso. Você pode vir acima com exemplos como este, mesmo sem o uso de zoológico em tudo. c e d no código original, na verdade, são iguais, exceto para o atributo TZONE.

Se você remover o atributo TZONE seguida, c e d será igual:

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

No caso do zoológico, uma vez que suporta praticamente qualquer classe tempo que você poderia considerar o uso de uma classe de tempo diferente se você não precisa de fusos horários. fusos horários apenas coisas complicar para nenhuma boa razão, se você não precisa deles. No exemplo aqui poderíamos ter classe data utilizada, por exemplo.

Leia R Notícias 4/1 para mais.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top