R 在大 for 循环、apply 或 foreach 后崩溃
R crashes after big for loop, apply or foreach
我写了一个脚本,它在小样本数据集上工作得很好,但是当我在更大和真实的数据上尝试同样的事情时,R Studio Session 崩溃并出现致命错误,当我 运行 不使用 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))
}
实际上是eight.status函数的问题,所以请不要考虑这个问题,它没有很好地表述。
我写了一个脚本,它在小样本数据集上工作得很好,但是当我在更大和真实的数据上尝试同样的事情时,R Studio Session 崩溃并出现致命错误,当我 运行 不使用 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))
}
实际上是eight.status函数的问题,所以请不要考虑这个问题,它没有很好地表述。