seqdist() 中是否可能存在内存瓶颈?
我是一名研究人员,在具有 64 GB RAM 的 Windows x64 计算机上处理寄存器数据。我们的数据由 60,000 人组成,目前我正在处理一个包含大约 220 万行 SPELL 格式的数据。我无法在其上运行 seqdist (method="OM", indel=1, sm="TRATE", with.missing=TRUE, full.matrix=FALSE),错误信息与此处相同,其中重要的部分似乎指向内存不足:“不允许负长度向量”。
好的,但是 seqdist() 似乎没有利用我的整个 RAM。现在我在 40,000 人的样本上运行它,它似乎通过了,但是 R 使用的 RAM 不到 2 gbs。如果我对 60,000 人运行 seqdist(),我会收到错误消息。
那里的某个地方可能有 2^31-1 的大小限制吗?
计算病房集群很容易利用所有可用的 RAM。我已经让它使用了多达 40 GB 的 RAM,这至少证明了 R 能够利用大量的 RAM。
编辑:案例的最大数量正好是 46341。但是警告,如果 size <= 46341 会吃掉内存。例如:
library(TraMineR)
id <- seq(from=1, to=46342, by=1)
set.seed(234324)
time1 <- sample(seq(from=1, to=3, by=1), size=46342, replace=TRUE)
time2 <- sample(seq(from=1, to=3, by=1), size=46342, replace=TRUE)
time3 <- sample(seq(from=1, to=3, by=1), size=46342, replace=TRUE)
testdata <- data.frame(id, time1, time2, time3)
testseq <- seqdef(testdata, 2:4)
testdist <- seqdist(testseq, method="OM", indel=1, sm="TRATE", full.matrix=FALSE)