rbind.zoo, похоже, не создает согласованный объект zoo

StackOverflow https://stackoverflow.com/questions/1898815

  •  19-09-2019
  •  | 
  •  

Вопрос

Я хочу объединить.zoo два объекта zoo вместе.Когда я тестировал, я столкнулся со следующей проблемой (?)...

Примечание:Приведенный ниже пример, в нем явно нет никакого смысла, кроме как быть иллюстративным.У меня есть объект zoo, назовем его "X".Я хочу разбить его на две части, а затем rbind.zoo соединить их вместе.Когда я сравниваю его с исходным объектом, то all.equal дает различия.

Похоже, что атрибут '$ class' отличается, но я не вижу, как и почему.Если я создаю эти объекты xts, то all.equal работает так, как ожидалось.

т. е......

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 дает мне следующую разницу:

"Атрибуты:< Компонент 3:Атрибуты:< Несоответствие длины:сравнение по первым 1 компонентам > >"

Это было полезно?

Решение

Да, возможно, вы обнаружили там ошибку с точки зрения обработки атрибутов.С другой стороны, кого это волнует? c и d фактически равны:

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> 

Осмотр объектов ничего не дает:

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"

Я предлагаю вам отправить вежливое электронное письмо сопровождающим zoo иллюстрирующий случай.

Другие советы

R не обрабатывает атрибут tzone объектов POSIXct последовательно.зоопарк не имеет к этому никакого отношения.Вы можете придумать подобные примеры, даже не используя zoo вообще.c и d в исходном коде фактически равны, за исключением атрибута tzone.

Если вы удалите атрибут tzone, то c и d будут равны:

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

В случае zoo, поскольку он поддерживает практически любой класс времени, вы могли бы рассмотреть возможность использования другого класса времени, если вам не нужны часовые пояса.Часовые пояса просто усложняют ситуацию без уважительной причины, если они вам не нужны.В приведенном здесь примере мы могли бы использовать, например, класс Date.

Подробнее читайте в R News 4/1.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top