我对使用诸如“ foreach”和“ do.parallel”之类的软件包是相当陌生的。我现在试图找出如何在嵌套的foreach循环中破坏语句。这是我要做什么的简化示例。这是我想使用foreach复制的原始for循环(实际上,我的代码无法轻松地转换为while循环,但是如果存在这样的解决方案,则可以改为使用while循环):
for (i in 1:30) {
for (j in 1:40) {
x <- paste0(i,j)
print(x)
if (j >= 30) {
break
}
}
}
这是我尝试翻译成foreach的尝试。我只想并行化外部循环,但是只要满足特定的if条件,便希望能够中断内部(顺序)循环。
(cl <- (detectCores() - 1) %>% makeCluster(outfile = "")) %>% registerDoParallel
foreach (i = 1:30, .packages = "foreach") %dopar% {
foreach (j = 1:40) %do% {
x <- paste0(i,j)
print(x)
if (j >= 30) {
break
}
}
}
我研究了关于SO的其他解决方案,但是,大多数解决方案比我要寻找的简单案例要先进得多。
谢谢!