Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-大数据-矢量超出矢量长度限制_R_Bigdata - Fatal编程技术网

R-大数据-矢量超出矢量长度限制

R-大数据-矢量超出矢量长度限制,r,bigdata,R,Bigdata,我有以下R代码: data <- read.csv('testfile.data', header = T) mat = as.matrix(data) 因为这是一个大数据集,所以我使用的是AmazonEC2,内存空间为64GB。所以希望记忆不是问题。我能够加载数据(第一线工作)。 但是as.matrix transformation(第二行错误)抛出以下错误: resulting vector exceeds vector length limit in 'AnswerType' 有

我有以下R代码:

data <- read.csv('testfile.data', header = T)
mat = as.matrix(data)
因为这是一个大数据集,所以我使用的是AmazonEC2,内存空间为64GB。所以希望记忆不是问题。我能够加载数据(第一线工作)。 但是as.matrix transformation(第二行错误)抛出以下错误:

resulting vector exceeds vector length limit in 'AnswerType'

有什么线索可能是问题吗?

您的矩阵的元素数超过了最大向量长度2^31-1。这是一个问题,因为矩阵只是一个具有
dim
属性的向量
read.csv
之所以有效,是因为它返回一个data.frame,这是一个向量列表

R> 75713*44771 > 2^31-1
[1] TRUE

有关更多详细信息,请参见
?“内存限制”

如前所述,R的开发版本支持大于2^31-1的向量。例如,这或多或少是透明的

> m = matrix(0L, .Machine$integer.max / 4, 5)
> length(m)
[1] 2684354555
这是我的

> R.version.string
[1] "R Under development (unstable) (2012-08-07 r60193)"
大型对象消耗大量内存(例如,我的16G内存的62.5%),而做任何有用的事情都需要几倍于此内存。此外,即使是对大数据的简单操作也可能需要相当长的时间。许多长向量上的操作还不受支持

> sum(m)
Error: long vectors not supported yet:
    /home/mtmorgan/src/R-devel/src/include/Rinlinedfuns.h:100

因此,通过迭代较大的文件,以较小的数据块处理数据通常是有意义的。这样就可以完全访问R的例程,并允许并行计算(通过并行包)。另一个策略是对数据进行下采样,这对统计受众来说不应该太吓人。

就这么做吧。我已经添加了在R中查找此信息的链接。@mnel:谢谢您的编辑。我还添加了一些细节,说明为什么
read.csv
有效,而
as.matrix
无效。@JoshuaUlrich那么这是否意味着没有办法让R处理像我一样大的数据集?R的开发版本允许向量,因此矩阵(总大小,而不是单个维度)大于2^31-1“处理数据集”意味着您必须输入所有数据,并且必须将其表示为矩阵;马丁·摩根:你能补充这一点作为答案,并详细说明(或举例说明)如何创建这么大的矩阵吗?还是支持开箱即用?@Martin并行计算可能不可能用于所有R函数。例如:glmnet。至少我不知道glmnet是否可以并行实现,这就是我当前数据分析所需要的
> sum(m)
Error: long vectors not supported yet:
    /home/mtmorgan/src/R-devel/src/include/Rinlinedfuns.h:100