尝试滞后 xts 时间序列时出现零长度错误?

Zero-length error when trying to Lag xts time series?

我使用以下方法生成了基本的 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 时开始的

考虑到我确实有一个非零向量,我找不到对此错误的任何解释。

您是否偶然加载了 dplyr?这是我可以复制您的错误的唯一方法。

dplyr 屏蔽了基础 R 附带的 stats::lag() 泛型函数。这会破坏所有定义 lag() 方法的 S3 类 的方法调度。所以这意味着 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) 在您不想使用 dplyr::lag().

的任何地方显式调用 stats::lag()