zoo/xts - 不能对1-cell子集进行数学运算?R挂了

SFu*_*n28 5 r zoo xts

我在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
Run Code Online (Sandbox Code Playgroud)

在这里,我有一个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     
Run Code Online (Sandbox Code Playgroud)

Jos*_*ich 2

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

coredata(sample.xts[1,2]) - coredata(sample.xts[2,2])
Run Code Online (Sandbox Code Playgroud)

我可以复制第二个问题,但我不确定这应该是一个需要高度优先解决的问题,因为它不适合 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]
Run Code Online (Sandbox Code Playgroud)