题
我最近一直在研究大型数据集(超过40万行)。到目前为止,我一直在使用XTS格式,它适用于数千个元素的“小”数据集。
现在,该项目的增长,R在检索数据库的数据并将其放入XTS中时,R只需崩溃即可。
我的理解是,R应该能够具有最高2^32-1元素的向量(或根据版本的2^64-1)。因此,我得出的结论是,XTS可能有一些局限性,但我找不到文档中的答案。 (也许我对我对理论可能向量大小的理解有些自信)。
总而言之,我想知道是否:
- XTS确实有尺寸限制
- 您认为处理大型时间序列的最聪明方法是什么? (我正在考虑将分析分为几个较小的数据集)。
- 我没有收到错误消息,R只需自动关闭。这是已知的行为吗?
解决方案
- 与R相同,这取决于所使用的内存类型(64位,32位)。无论如何,它都非常大。
- Chuncking数据确实是一个好主意,但不需要。
- 这个问题来自一个 R 2.11.0中的错误已在R 2.11.1中解决. 。长期向量(此处为XTS的索引)存在问题。
解决方案
关于您的两个问题,我的$ 0.02:
是的,对于r矢量,有2^32-1元素的限制。这来自索引逻辑,据报道,它在R中足够“深入”,因此不太可能很快更换(因为它会影响太多现有代码)。 Google R-Devel列表以获取详细信息;这是以前出现的。这 XTS 软件包不会施加额外的限制。
是的,将事物分成可管理的块是最明智的方法。当我专门使用32位版本的R时,我曾经在大型数据集上进行此操作。
有一些“内存之外”的方法,但是我首先尝试重新考虑问题并确认您确实需要一次所有400k行。
不隶属于 StackOverflow