【发布时间】:2014-07-27 07:16:28
【问题描述】:
我有一个简单的分析要做。我只需要计算列(或行,如果转置)的相关性。够简单吗?我无法获得整周的结果,我已经浏览了这里的大部分解决方案。
我的笔记本电脑有 4GB 内存。我确实可以访问具有 32 个节点的服务器。我的数据无法在此处加载,因为它很大(411k 列和 100 行)。如果您需要任何其他信息或部分数据,我可以尝试将其放在这里,但无需真正查看数据即可轻松解释问题。我只需要得到一个大小为 411k X 411k 的相关矩阵,这意味着我需要计算数据行之间的相关性。
我尝试编写的概念:(所有这些都以某种方式给我带来了内存问题或永远运行)
- 最简单的方法,一行反对所有,使用 append.T 写出结果。 (永远运行)
- biCorPar.r by bobthecat (https://gist.github.com/bobthecat/5024079),将数据分成块并使用 ff 矩阵。 (无法在我的服务器中使用 ff() 分配内存来分配 corMAT 矩阵)
- 将数据拆分为集合(每 10000 个连续行将是一个集合)并将每个集合与另一个集合进行关联(与 bigcorPar 的逻辑相同),但我无法找到一种方法将它们全部存储在一起最终生成最终的 411kX411k 矩阵。
- 我现在正在尝试这个,bigcorPar.r 在 10000 行上针对 411k(因此 10000 被分成块)并将结果保存在单独的 csv 文件中。
- 我还尝试在我的服务器的一个节点上运行每 1000 vs 411k,今天是我的第三天,我仍然在第 71 行。
我不是 R 专业人士,所以我只能尝试这么多。要么我的代码永远运行,要么我没有足够的内存来存储结果。有没有更有效的方法来解决这个问题?
感谢您的所有 cmets 和帮助。
【问题讨论】:
-
一个大小为 411000 x 411000 的相关矩阵。即 1.68921e+11 个元素。 ff 向量中的最大元素数为 2147483647。您的对象将是该最大值的 +/- 50 倍。你应该重新考虑你想用这个相关矩阵做什么。
标签: r memory-management ff