【发布时间】:2016-03-20 12:42:25
【问题描述】:
我在具有 128 GB RAM 的机器上运行 R 3.2.3。我有一个 123028 行 x 168 列的大矩阵。我想在 R 中使用层次聚类算法,因此在此之前,我尝试使用 vegan 包中的 vegdist() 函数和 Bray-Curtis 方法在 R 中创建一个距离矩阵。我收到有关内存分配的错误:
df <- as.data.frame(matrix(rnorm(20668704), nrow = 123028))
library(vegan)
mydist <- vegdist(df)
vegdist(df) 中的错误: .Fortran 不支持长向量(参数 4)
如果我使用 pryr 包找出距离矩阵需要多少内存,我发现需要 121 GB,这比我拥有的 RAM 少。
library(pryr)
mem_change(x <- 1:123028^2)
121 GB
我知道 R 中的单个对象曾经有 20 亿个值的限制,但我认为该限制在最新版本的 R 中消失了。还有其他我不知道的内存限制吗?
底线是我想知道:我能做些什么来处理这个错误?真的是因为内存限制还是我错了?我想留在R中并使用除k-means之外的聚类算法,所以我需要计算一个距离矩阵。
【问题讨论】:
-
你总是可以分段计算。
标签: r memory hierarchical-clustering vegan