在ff中创建一个大矩阵

3
我正在尝试在ff中创建一个巨大的矩阵,我知道ff非常适合这种情况。但是,有一个主要问题。矩阵的维数超过了.Machine$max_integer!我正在64位机器上运行,使用64位R和64位ff。是否有任何方法可以解决这个问题?已经建议使用stdint.h中的MAXINT值。是否有任何方法可以在不更改该文件并可能破坏构建的情况下修复此问题?
> ffMatrix <- ff(vmode="boolean", dim=c(300000,300000))
Error in if (length < 0 || length > .Machine$integer.max) stop("length must be between 1 and .Machine$integer.max") : 
  missing value where TRUE/FALSE needed
In addition: Warning message:
In ff(vmode = "boolean", dim = c(300000, 300000)) :
  NAs introduced by coercion

> 300000**2 > .Machine$integer.max
[1] TRUE

1
你知道这个矩阵有多大吗?86.7361738艾字节[所以你需要128位处理器]。:-)内存很便宜,但不是那么便宜。 - Anycorn
哦,那只是一个例子,看看我是否会出错。我的矩阵大约是300000x300000。 - Ryan R. Rosario
那个非常大的矩阵,你需要并行计算机 :-).300000x300000 > 2^32(即使在64位机器上,int可能仍然是32位) - Anycorn
真的。bigmemory可以处理它,但文件作为密集矩阵大小为117GB。现在在R中存在一个空白:内存不足的巨大稀疏矩阵。 - Ryan R. Rosario
好的,这样的应用程序总体上很少。也许尝试以不同的算法思考?祝你好运。 - Anycorn
aaa:将第三个评论“that still very large matrix, you need parallel computer...”复制/粘贴为答案,我会标记它为最佳答案。经过研究,这是正确的,R中没有“long long”。 - Ryan R. Rosario
1个回答

1

这仍然是一个非常大的矩阵,你需要一台并行计算机 :-). 300000x300000 > 2^32 (即使在64位机器上,int很可能也是32位)。

另请参阅link


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接