【发布时间】:2017-09-29 16:54:50
【问题描述】:
通过在使用 foreach 时将 %dopar% 更改为 %do%,我可以按顺序运行代码。如何以编程方式执行此操作?
例如我想要以下内容,但只有一个 foreach 语句:
library(doParallel)
library(foreach)
registerDoParallel(cores = 4)
runner <- function(parallel = FALSE) {
if (parallel)
foreach(i=1:10) %dopar% {
print(i)
}
else
foreach(i=1:10) %do% {
print(i)
}
}
runner()
runner(TRUE)
【问题讨论】:
-
如果你有很多代码代替
print(i),那么可以将其转换为函数,或者使用source。 -
这可能是一个聪明的举动,但我看不出这对我的问题有什么帮助。代码只是一个非常不现实的例子。
-
这是一个简单的建议,一个解决方法。试图了解使其程序化的动机。
-
出于各种原因,即时切换可能是有意义的——有时只是出于调试原因。我真的不想每次都编辑代码,也不想引入或多或少冗余的 foreach 语句。
-
另见
match.fun。
标签: r foreach parallel-foreach