У меня есть два часовых временных ряда xts, которые я устанавливаю для ежедневной периодичности с apply.daily
.В этом же вызове я выбираю / подставляю один столбец из данных.Когда я объединяю два ежедневных временных ряда с rbind
, я получаю сообщение об ошибке.
Я уже нашел решение, но мне было любопытно, ожидается ли такое поведение или нет.
Здесьнекоторый код для воспроизведения ошибки в R версии 3.5.2 (Linux Debian) и xts_0.11-2:
data1 <- xts(matrix(1:144, ncol = 2), as.POSIXct("2019-05-09 00:00:00") -
seq.int(60*60, by = 60*60, length.out = 72))
data2 <- xts(matrix(1:144, ncol = 2), as.POSIXct("2019-05-05 00:00:00") -
seq.int(60*60, by = 60*60, length.out = 72))
colnames(data1) <- c("col1", "col2")
colnames(data2) <- c("col1", "col2")
data1.daily <- apply.daily(data1[,"col1"], colSums)
data2.daily <- apply.daily(data2[,"col1"], colSums)
data.daily <- rbind(data1.daily, data2.daily)
Вызывает следующую ошибку:
Error in rbind(deparse.level, ...) : length of 'dimnames' [1]
not equal to array extent
Главный виновникэто первая строка атрибута chr [1:3] "col1" "col1" "col1"
, которая выглядит странной для меня:
str(data1.daily)
An ‘xts’ object on 2019-05-06 23:00:00/2019-05-08 23:00:00 containing:
Data: num [1:3, 1] 1452 876 300
- attr(*, "dimnames")=List of 2
..$ : chr [1:3] "col1" "col1" "col1"
..$ : chr "col1"
Indexed by objects of class: [POSIXct,POSIXt] TZ:
xts Attributes:
NULL
Я легко могу решить проблему, поменяв местами шаги:
data <- rbind(data1, data2)
data.daily <- apply.daily(data[,"col1"], colSums)
Но я бы предпочел сохранитьданные, как только они имеют более низкую частоту.
Таким образом, вопрос не в том, как решить проблему, а в том, может ли это быть ошибкой или какой-либо дополнительной настройкой для другой цели.