我的功能有一些问题vegdist
。我想用jaccard计算一个距离矩阵。我有二进制数据。
问题是我有一个 138037 行(站点)和 89 列(物种)的矩阵。我的脚本是:
library("vegan")
memory.limit(size = 100000) # it gives 1 Tera from HDD in case ram memory is over
DF=as.data.frame(MODELOS)
DF=na.omit(DF)
DISTAN=vegdist(DF[,2:ncol(DF)],"jaccard")
或更可重复地:
nsites <- 138037
nspp <- 89
DF <- matrix(0,nrow=nsites,ncol=nspp)
DISTAN=vegdist(DF,"jaccard")
它几乎立即产生错误:
Error in double(N * (N - 1)/2) : vector size specified is too large
我认为这是一个内存错误,但我不知道为什么如果我有一台 32GB 内存和 1 Tera 硬盘的电脑。
我还尝试使用dist
包代理中的函数做一个 dist 矩阵:
library(proxy)
vector=dist(DF, method = "Jaccard")
它开始运行,但是当它达到 10 GB 的内存时,一个窗口宣布 R 犯了一个错误,它将关闭,所以它关闭并开始一个新的部分。
我真的不知道发生了什么,更不知道如何解决这个问题,有人可以帮助我吗?