如何以编程方式在 foreach 中的 %do% 和 %dopar% 之间切换?
How to switch programmatically between %do% and %dopar% in foreach?
通过在使用 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)
您可以使用ifelse
来选择中缀函数:
runner <- function(parallel = FALSE) {
`%myinfix%` <- ifelse(parallel, `%dopar%`, `%do%`)
foreach(i=1:10) %myinfix% {
print(i)
}
}
通过在使用 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)
您可以使用ifelse
来选择中缀函数:
runner <- function(parallel = FALSE) {
`%myinfix%` <- ifelse(parallel, `%dopar%`, `%do%`)
foreach(i=1:10) %myinfix% {
print(i)
}
}