【发布时间】:2023-03-17 17:48:01
【问题描述】:
我编写了一个脚本,该脚本在小样本数据集上运行良好,但是当我在更大的真实数据上尝试相同的操作时,R Studio Session 崩溃并出现致命错误,运行脚本时 R 会话也是如此不使用 RStudio。这是我的 sessionInfo() :
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
locale:
[1] LC_COLLATE=French_France.1252 LC_CTYPE=French_France.1252 LC_MONETARY=French_France.1252
[4] LC_NUMERIC=C LC_TIME=French_France.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] rsconnect_0.4.3 tools_3.3.1
我尝试使用 for 循环、foreach 包、应用函数、plyr 构建相同的脚本......没有任何效果。很抱歉不能给出一个可重现的例子,但是脚本和数据非常大,当它们只是一个摘录时,它可以工作......
有谁知道问题出在哪里?我确切地说我没有收到任何错误消息...
编辑
这是我的代码,如果它可以帮助任何人找到解决方案:
# pairing des sections
print("Pairing...")
pair <- pairing(revs)
# établissement de la struture en "text" et "diff"
revs <- structure(revs)
# initialisation de la boucle
if(init) revs <- init(revs)
else revs[[1]] <- start
depart_id <- max(revs[[1]][length(revs[[1]]) - 1][[1]]$diff$id)
print("Versionning... ")
for(i in 2:length(revs)) {
print(i)
old <- revs[[i-1]]
new <- revs[[i]]
pairSmall <- filter(pair, pairing == i)
revs[[i]] <- one.status(new, old, pairSmall)
revs[[i]] <- two.status(revs[[i]], old, pairSmall, depart_id)
revs[[i]] <- three.status(revs[[i]],old, pairSmall, calcul.id(revs[[i]], old))
revs[[i]] <- four.status(revs[[i]], old, pairSmall, calcul.id(revs[[i]], old))
revs[[i]] <- five.status(revs[[i]], old, pairSmall)
revs[[i]] <- six.status(revs[[i]], old, pairSmall, calcul.id(revs[[i]], old))
revs[[i]] <- seven.status(revs[[i]], old, pairSmall, calcul.id(revs[[i]], old))
revs[[i]] <- eight.status(revs[[i]], old, pairSmall, calcul.id(revs[[i]], old))
}
【问题讨论】:
-
很可能会发生这种情况,因为您的数据太大而无法放入 RAM 中,从而导致崩溃。
-
我的数据大约是 50 mb,而我有 8gb ram... revs((i)) 的倍数分配会导致这样的问题?
-
如果我理解正确,你没有初始化
revs。您应该使用正确的尺寸预设它。看看here... 可重现的代码也会有所帮助。 -
Revs 存储我的数据,这里只是崩溃函数的代码,它以 revs 作为参数。这里我用 i 索引修改了 revs 值