5

我在 Windows 上使用最新版本的 R/xts/zoo:R 2.15、xts 0.8-6、zoo 1.7-7

我看到以下奇怪的行为,而以前的版本并非如此:

library(xts)
data(sample_matrix)
sample.xts <- as.xts(sample_matrix)

sample.xts[1, 2] - sample.xts[2,2]     # results in numeric(0)?!?!?!
(sample.xts[ 1, 2] - sample.xts[2,2])/sample.xts[3,1]  # if I run this twice R locks up

在这里,我将 XTS 对象子集到单个单元格。减法不再起作用。此外,除法会导致 R 完全锁定。

有没有其他人看到这个?这是一个已知的错误还是我错过了什么?我可以在两台机器上重现这个。

会话信息(一些包被删除为机密):

R version 2.15.0 (2012-03-30)
Platform: x86_64-pc-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] parallel  stats     graphics  utils     datasets  grDevices methods   base     
4

1 回答 1

2

你永远不能用不重叠的索引减去 xts/zoo 对象。算术运算总是在执行运算之前合并。您需要使用coredata您编写的减法来提供您期望的结果。

coredata(sample.xts[1,2]) - coredata(sample.xts[2,2])

我可以复制第二个问题,但我不确定这是否应该是修复的高优先级,因为它不适合 zoo/xts 习语并且会导致完全为空的 xts 对象。如果(某些)索引对齐,一切都很好。

(sample.xts[1,2] - sample.xts[1,3]) / sample.xts[1,4]
(sample.xts[2,2] - sample.xts[1:2,3]) / sample.xts[2:3,4]
于 2012-05-09T12:37:05.670 回答