2010-06-29 172 views
2

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

现在项目不断增加,R在检索数据库的数据并将其放入XTS时崩溃。

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

综上所述,我想知道,如果:

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

SOLUTION

  1. 同为R和这取决于种存储器被使用(64位,32位)。无论如何,这是非常大的。
  2. Chuncking数据确实是一个好主意,但它不是必需的。
  3. 此问题来自R 2.11.0中的错误,该错误已在R 2.11.1中解决。长日期矢量(这里是XTS的索引)存在问题。
+0

R 3.0.0将允许具有> 2^32 - 1个元素的向量。它计划在4月正式出来,但在那之前尝试r-devel版本的R. – 2013-01-02 19:35:25

回答

5

关于你提到的两个问题,我的$ 0.02:

  1. 是的,有2^32-1元素的R载体的限制。这来自索引逻辑,据报道R中的内容足够深,不可能很快被替换(因为它会影响现有的代码)。 Google详细介绍r-devel列表;这已经出现了。 xts包不会强加额外的限制。

  2. 是的,把事情分解成可管理的块是最聪明的方法。我曾经在大数据集上做过这些工作,当时我只使用32位版本的R。我现在使用64位R,并且不再有这个问题(和/或保持我的数据集合理),

有一些'内存不足'的方法,但我首先尝试重新思考问题,并确认您确实需要一次全部400k行。

+0

那么问题是我正在对数据集应用一些指标。基本上我必须找到这些指标的最佳参数。所以按块分割对我来说并不是很好,因为它使我的分析“不连贯”。我能做的也许只是考虑帧并连续移动数据。 (如1 ... 10,2 ... 11,3 ....12,每次查询数据库)。 – SRKX 2010-06-29 03:36:11

+0

其实我注意到如果我做了计算,并且我不在R控制台上显示结果,R就不会崩溃。当以某种方式显示数据时,这只是个问题。很高兴知道。任何想法为什么这样? – SRKX 2010-06-29 03:49:35

+0

@JSMaga:可能是'print' /'plot'函数不能处理那么多行。无论如何,你无法阅读那么多,所以最好先总结一下,只显示你需要的内容。 – 2010-06-29 15:26:40