【问题标题】:zoo/xts - can't do math on 1-cell subsets? R hangszoo/xts - 不能对 1-cell 子集进行数学运算? R 挂起
【发布时间】:2012-05-09 12:23:18
【问题描述】:

我在 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     

【问题讨论】:

  • 顺便说一句,我认为这与返回 zoo/xts 对象而不是命名数字的子集操作有关。也许这曾经对我有用,因为我的环境设置为 [ 被另一个包劫持?无论如何,不​​解释崩溃!
  • sessionInfo 的输出可能有助于确定过去这对您有用的原因。此外,“挂起”或“锁定”与崩溃不同。在崩溃中,程序终止。无论如何,这种行为是不可取的。
  • 您对 crash v. hang 的看法是正确的。我很戏剧化。 =) 我更新了标题。感谢有关 sessionInfo() 的提示!
  • 与其说是“提示”,不如说是“索取信息”。 :)
  • R-forge 的 xts 中修复了挂起/崩溃问题。

标签: r xts zoo


【解决方案1】:

你永远不能用不重叠的索引减去 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]

【讨论】:

  • 我认为这在过去对我有用,因为我的包函数是通过 [.我认为是这种情况,因为该函数找不到 [.zoo 并退回到常规旧矩阵 [.所以关于我的环境的某些东西一定已经改变了,以至于我的包函数现在正在寻找 [.zoo.这有意义吗?
  • @JoshuaUlrich:似乎应该报告一个错误应该,而不是导致“挂起”,这似乎需要重新启动并且基本上是“相当于崩溃”。
  • @DWin:我知道,我知道。但我真的更愿意说,“那就不要那样做。”
猜你喜欢
  • 2018-07-13
  • 2011-05-21
  • 2021-11-12
  • 1970-01-01
  • 2016-08-15
  • 1970-01-01
  • 2017-07-25
  • 2014-02-02
  • 2018-12-04
相关资源
最近更新 更多