用 r 中的 foreach 替换 for 循环

Replace a for loop with foreach in r

我想用 foreach 循环替换 for 循环,但我收到错误“意外的令牌输入”。下面你可以看到我的代码。只需提及所有 f 都是文件名。你有什么想法吗?

for (f in file) {
  print(f)
  analyze(f)
  tmp <- res4
  y <- rbind(y, tmp)
}

这是一个使用顺序 %do% 运算符的简单 foreach 循环。
请注意,向量 file 的前 2 个值是 print.

的输出
library(foreach)

file <- c("/data/an_01h.dat", "/data/an_01h.dat")
foreach (f=file) %do% {
  print(f)
}
#> [1] "/data/an_01h.dat"
#> [1] "/data/an_01h.dat"
#> [[1]]
#> [1] "/data/an_01h.dat"
#> 
#> [[2]]
#> [1] "/data/an_01h.dat"

reprex package (v2.0.1)

创建于 2022-04-21

还有一个并行循环。 %dopar% 运算符是可并行运算符。这次 print 没有显示它的输出,请参阅 this SO question

library(foreach)
library(doParallel)
#> Loading required package: iterators
#> Loading required package: parallel

file <- c("/data/an_01h.dat", "/data/an_01h.dat")

ncores <- detectCores() - 1L
registerDoParallel(ncores)  # use multicore, set to the number of our cores
foreach (f=file) %dopar% {
  print(f)
}
#> [[1]]
#> [1] "/data/an_01h.dat"
#> 
#> [[2]]
#> [1] "/data/an_01h.dat"

reprex package (v2.0.1)

创建于 2022-04-21