巨大的桌子的dist(as.matrix)

时间:2013-05-28 16:36:16

标签: r

我刚刚开始使用R并遇到问题。

我希望hclust包含大量数据的表格。

数据由以下矩阵组成:

> nrow(hell)
[1] 202397
> ncol(hell)
[1] 39840

矩阵由整数组成(大多数为0但当然也有更高的值)。

现在我设法在48核,280gb的RAM linux机器上用read.table()读取了我的15gb txt文件,但是如果我想计算距离矩阵,它会因为这个错误而失败:

d <- dist(as.matrix(hell))
Error in unlist(x,recursive, use.names):
resulting vector exceeds vector length limit in 'AnswerType'

我已经用Google搜索了但找不到答案(或了解如何处理此问题)。 有机会做我想要的吗? :(

1 个答案:

答案 0 :(得分:2)

> 202397^2 > .Machine$integer.max
[1] TRUE

R使用整数来索引其向量和矩阵,矩阵是一种折叠向量。有些任务对于R来说太大了。即使你将该乘积除以2来解释距离矩阵只需要保持n ^ 2/2-n计算的下三角部分的事实,它仍然需要更长的时间矢量比R可以构造。

> 202397^2/2- 202397 > .Machine$integer.max
[1] TRUE