【问题标题】:XTS size limitationXTS 大小限制
【发布时间】:2011-03-09 10:16:25
【问题描述】:

我最近一直在处理大型数据集(超过 40 万行)。到目前为止,我一直在使用 XTS 格式,它适用于包含几万个元素的“小型”数据集。

随着项目的发展,R 在检索数据库数据并将其放入 XTS 时会崩溃。

据我了解,R 应该能够拥有大小不超过 2^32-1 个元素(或根据版本为 2^64-1)的向量。因此,我得出的结论是 XTS 可能有一些限制,但我在文档中找不到答案。 (也许我对理论上可能的向量大小的理解有点过分自信)。

总结一下,我想知道是否:

  1. XTS 确实有大小限制
  2. 您认为处理大型时间序列最聪明的方法是什么? (我正在考虑将分析拆分为几个较小的数据集)。
  3. 我没有收到错误消息,R 只是自动关闭。这是一种已知行为吗?

解决方案

  1. 与 R 相同,它取决于所使用的内存类型(64 位、32 位)。无论如何它都非常大。
  2. 分块数据确实是个好主意,但不是必需的。
  3. 此问题来自 R 2.11.0 中的一个错误,该错误已在 R 2.11.1 中解决。长日期向量(此处为 XTS 的索引)存在问题。

【问题讨论】:

  • R 3.0.0 将允许具有 > 2^32 - 1 个元素的向量。它计划于 4 月正式发布,但在那之前请尝试 R 的 r-devel 版本。

标签: r time time-series xts


【解决方案1】:

关于你的两个问题,我的 0.02 美元:

  1. 是的,R 向量有 2^32-1 个元素的限制。这来自索引逻辑,据报道,它在 R 中足够“深入”,不太可能很快被替换(因为它会影响很多现有代码)。谷歌 r-devel 列表了解详情;这以前出现过。 xts 包没有施加额外的限制。

  2. 是的,将事物分成可管理的块是最聪明的方法。当我专门使用 32 位版本的 R 时,我曾经在大型数据集上这样做。我现在使用 64 位 R 并且不再有这个问题(和/或保持我的数据集健全),

有一些“内存不足”的方法,但我会首先尝试重新考虑问题并确认您确实需要一次所有 400k 行。

【讨论】:

  • 好吧,我在数据集上应用了一些指标。基本上我必须找到这些指标的最佳参数。所以按块拆分对我来说并不是很好,因为它使我的分析“不连续”。我可以做的也许是只考虑框架并连续移动数据的框架。 (比如1...10、2...11、3....12,每次都重新查询数据库)。
  • 实际上我注意到,如果我进行计算并且不在 R 控制台中显示结果,R 不会崩溃。只有在以某种方式显示数据时才会出现问题。很高兴知道。知道为什么会这样吗?
  • @JSMaga: 可能是print/plot 函数无法处理那么多行。反正看不了那么多,最好先总结一下,只展示你需要的。
  • @Richie Cooton:确实。即使试图在 R 中显示它也会导致它崩溃。它应该给我一个错误。而不是崩溃......
  • @Richie Cooton:这个错误是针对 R 本身的。最新版本已解决。所以print/plot 确实处理了这么多点...
猜你喜欢
  • 1970-01-01
  • 2011-11-21
  • 2010-12-29
  • 2012-10-16
  • 2011-03-27
  • 2014-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多