用 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
我想用 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