我有很多使用xts对象的代码,在升级到R 4.0.0时一切正常,但是索引功能现在失败了。
如果我运行一个简单的脚本:
> class(SPY)
[1] "xts" "zoo"
> require(quantmod)
>
> getSymbols("SPY")
[1] "SPY"
>
> class(SPY)
[1] "xts" "zoo"
>
> index(SPY)
Error in if (type == "Date" || type == "yearmon" || type == "yearqtr") temp = as.Date(temp) :
missing value where TRUE/FALSE needed
...但是,如果我跑步 index(as.zoo(SPY))->返回预期的日期索引。
看来,无论与哪个版本的索引匹配,它都无法从XTS对象中获取indexCLASS值。
任何人都知道哪里有问题吗?我已经将index包裹在一个名为zoo.index的函数中,但这是一个完全hack,并不正确。
> sessionInfo()
R version 4.0.0 (2020-04-24)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Catalina 10.15.4
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib
Random number generation:
RNG: Mersenne-Twister
Normal: Inversion
Sample: Rounding
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] parallel stats graphics grDevices utils datasets methods base
other attached packages:
[1] rugarch_1.4-2 Quandl_2.10.0 lubridate_1.7.8 quantmod_0.4.17 TTR_0.23-6 xts_0.12-0 zoo_1.8-8
loaded via a namespace (and not attached):
[1] Rcpp_1.0.4.6 MASS_7.3-51.5 mclust_5.4.6 lattice_0.20-41
[5] R6_2.4.1 Rsolnp_1.16 httr_1.4.1 GeneralizedHyperbolic_0.8-4
[9] tools_4.0.0 SkewHyperbolic_0.4-0 spd_2.0-1 grid_4.0.0
[13] KernSmooth_2.23-16 numDeriv_2016.8-1.1 Matrix_1.2-18 nloptr_1.2.2.1
[17] DistributionUtils_0.6-0 ks_1.11.7 curl_4.3 compiler_4.0.0
[21] generics_0.0.2 expm_0.999-4 jsonlite_1.6.1 truncnorm_1.0-8
[25] mvtnorm_1.1-0
答案 0 :(得分:0)
当前的xts代码中没有以下错误行,并且历史上从未存在过。
if (type == "Date" || type == "yearmon" || type == "yearqtr") temp = as.Date(temp)
所以我最好的猜测是,您在全局环境中有一个函数index.xts()
,其中包含发生错误的代码行。
您提到了indexCLASS
属性,该属性已在xts 0.12.0中删除。因此,遮盖index.xts()
的函数可能具有type <- attr(x, "indexCLASS")
而不是使用indexClass()
(不推荐使用)或(首选)tclass()
函数。