【发布时间】:2013-02-09 22:11:00
【问题描述】:
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 犯了一个错误,它将关闭,所以它关闭并开始一个新的部分。
我真的不知道发生了什么,更不知道如何解决这个问题,有人可以帮助我吗?
【问题讨论】:
-
请将您的问题和标题编辑为英文,本网站上的所有内容都应以英文书写(包括错误消息)
-
有什么特别的原因为什么会被标记为 PHP?
-
@user2055974 您可以设置
Sys.setenv(LANG = "en")以便用英文重现错误消息。见this post -
你不应该在 StackOverflow 和 R-help 之间交叉发布:article.gmane.org/gmane.comp.lang.r.general/286593(Brian Ripley 给你的答案和我几乎一样,下面......)