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

现在,该项目的增长,R在检索数据库的数据并将其放入XTS中时,R只需崩溃即可。

我的理解是,R应该能够具有最高2^32-1元素的向量(或根据版本的2^64-1)。因此,我得出的结论是,XTS可能有一些局限性,但我找不到文档中的答案。 (也许我对我对理论可能向量大小的理解有些自信)。

总而言之,我想知道是否:

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

解决方案

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

解决方案

关于您的两个问题,我的$ 0.02:

  1. 是的,对于r矢量,有2^32-1元素的限制。这来自索引逻辑,据报道,它在R中足够“深入”,因此不太可能很快更换(因为它会影响太多现有代码)。 Google R-Devel列表以获取详细信息;这是以前出现的。这 XTS 软件包不会施加额外的限制。

  2. 是的,将事物分成可管理的块是最明智的方法。当我专门使用32位版本的R时,我曾经在大型数据集上进行此操作。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top