Ошибка нулевой длины при попытке отложить временной ряд xts? - PullRequest
1 голос
/ 09 июля 2020

У меня есть объект basi c xts, созданный с использованием следующего:

library(quantmod)
temp1 <- getSymbols("GOOG",src = 'yahoo',from=Sys.Date()-50,to = Sys.Date(),auto.assign=FALSE)
temp2 <- temp1$GOOG.Close
head(temp2)
           GOOG.Close
2020-05-20    1406.72
2020-05-21    1402.80
2020-05-22    1410.42
2020-05-26    1417.02
2020-05-27    1417.84
2020-05-28    1416.73
lag(temp2,1)
Error in c.xts(NA_real_, c(1406.719971, 1402.800049, 1410.420044, 1417.02002,  : 
  zero-length vectors with non-zero-length index are not allowed

Насколько я могу судить, temp2 не имеет нулевой длины, поэтому я не понимаю ошибку.

Точно так же функция diff (temp2) работает должным образом.

Кажется, это началось, когда я недавно обновился до R 4.0.1

Я не могу найти объяснения этой ошибке, учитывая, что я делаю иметь ненулевой вектор.

1 Ответ

1 голос
/ 12 июля 2020

У вас случайно загружено dplyr? Это единственный способ воспроизвести вашу ошибку.

dplyr маскирует функцию stats::lag() generi c, которая поставляется с базой R. Это нарушает отправку методов для всех классов S3, которые определяют метод lag() . Это означает, что lag() может работать или не работать для этих классов.

R> head(lag(temp2, 1))
           GOOG.Close
2020-05-26         NA
2020-05-27    1417.02
2020-05-28    1417.84
2020-05-29    1416.73
2020-06-01    1428.92
2020-06-02    1431.82
R> suppressPackageStartupMessages(library(dplyr))
R> head(lag(temp2, 1))
Error in c.xts(NA_real_, c(1417.02002, 1417.839966, 1416.72998, 1428.920044,  : 
  zero-length vectors with non-zero-length index are not allowed

Итак, вам нужно либо: 1) не загружать dplyr, либо 2) явно вызывать stats::lag() везде, где вы не хотите использовать dplyr::lag().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...