2

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

现在项目增长了,在检索数据库数据并将其放入 XTS 时,R 只会崩溃。

据我了解,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 的索引)存在问题。
4

1 回答 1

5

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

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

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

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

于 2010-06-29T02:57:29.553 回答