如何解决为什么一段独立运行的代码不能在 R 中并行运行?
我写了一段代码(附在下面),当我串行运行它时运行良好,但是当我在 R 中使用 foreach 和 doparallel 库时,我得到一个错误代码,内容为:“任务 1 失败 -”丢失需要 TRUE/FALSE 的值"
for each 循环中的所有内容都独立运行,在较小的批处理中,我可以连续运行它并且可以运行。
listofColumns <- colnames(tempdata)
foreach(i = 1:nSubsets,.export = ls(globalenv())) %dopar% {
DoubleTempData <- get(paste0("Subset",i))
DoubleTempData <- subset(DoubleTempData,select = -c(subset))
RowCounter <- 2
Columnfigurer <- 2
LastCATEGORYIndicator <- "THERE IS NO CATEGORY,ONLY ZUUL"
while (RowCounter <= nrow(DoubleTempData)) {
print(paste("Checking row ",RowCounter))
RowChecker <- max(1,RowCounter - 5)
while (RowChecker < RowCounter) {
print(paste("Checking row",RowCounter,"against row",RowChecker))
if (DoubleTempData$CATEGORY[RowChecker] == DoubleTempData$CATEGORY[RowCounter])
{
print("The rows match!")
while (Columnfigurer > 0) {
if (DoubleTempData$CATEGORY[RowCounter] != LastCATEGORYIndicator) {
Columnfigurer <- 2
}
print(paste ("Checking Iteration",Columnfigurer))
if (Columnfigurer * length(listofColumns) <= length(colnames(DoubleTempData)))
{
print(paste("Iteration",Columnfigurer," exists"))
CellChecker <-
((Columnfigurer - 1) * length(listofColumns) + 1)
if (is.na(DoubleTempData[[RowChecker,CellChecker]])) {
print(paste("Current value is NA. Writing in new value."))
ColumnCounter <- 1
while (ColumnCounter <= length(listofColumns)) {
DoubleTempData[[RowChecker,(Columnfigurer - 1) * length(listofColumns) +
ColumnCounter]] <-
DoubleTempData[[RowCounter,ColumnCounter]]
ColumnCounter <- ColumnCounter + 1
}
DoubleTempData <- DoubleTempData[-RowCounter]
LastCATEGORYIndicator <-
DoubleTempData$CATEGORY[RowChecker]
RowCounter <- max(2,RowCounter - 1)
Columnfigurer <- Columnfigurer + 1
break
}
else
{
print(paste(
"Current value is not NA,increasing iteration count."
))
Columnfigurer <- Columnfigurer + 1
}
}
if (Columnfigurer * length(listofColumns) > length(colnames(DoubleTempData)))
{
print(paste(
"Iteration ","does not exist,adding iteration."
))
ColumnAdder <- 1
while (ColumnAdder <= length(listofColumns)) {
NewColumnName <-
paste0(listofColumns[ColumnAdder],"_",Columnfigurer)
DoubleTempData[,NewColumnName] <- NA
ColumnAdder <- ColumnAdder + 1
}
}
}
}
RowChecker <- RowChecker + 1
}
RowCounter <- RowCounter + 1
}
assign(paste0("Subset",i),DoubleTempData)
}
例如,这是我运行的随机生成的子集 1 的示例,其中包含大约 70 个观察值和 7 列(其中一个按预期被程序删除):
[![在此处输入图像描述][1]][1] [1]:https://i.stack.imgur.com/Jlytj.png
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。