gpt4 book ai didi

r - Foreach 组合输出 - 特定向量

转载 作者:行者123 更新时间:2023-12-05 08:33:00 25 4
gpt4 key购买 nike

我刚刚开始使用 foreachparallel,在结合每次迭代的输出时遇到了一些挑战。

目前,在每次迭代中,我都会输出一组变量,我想将这些变量组合成一个向量,这样我就可以获得所有迭代的一些汇总统计数据。一个例子:

foreach (s = 1:num) %dopar%{
var1 = ...
var2 = ...
var3 = ...}

最终我想要 3 个包含每次迭代产生的输出的向量,所以:var1 = c(来自 s=1 的 var1,来自 s=2 的 var1,来自 s=3 的 var1,...)

我研究了 .combine 选项并尝试创建一个可以追加的函数,但没有成功。

最佳答案

foreach...%dopar% 之后的 {} 表现得像一个函数,也就是说,无论您是否显式指定它,它都会返回一个值。通常不指定,但通过指定你可以返回任何你喜欢的值

foreach(I=1:3) %dopar% { <complicated stuff> 
return(1) }

# [[1]]
# [1] 1

# [[2]]
# [1] 1

# [[3]]
# [1] 1

在你的例子中,你想返回 3 个向量,不幸的是这是不可能的

library(foreach)
library(doParallel)
cl <- makeCluster(detectCores())
registerDoParallel(cl)

foreach(I=1:8) %dopar% { v1 <- "ant"
v2 <- "pant"
return(v1, v2) }

导致以下错误

Error in { : task 1 failed - "multi-argument returns are not permitted"

但是你可以列出你的向量,然后返回值

foreach(I=1:8, .combine=rbind) %dopar% {  v1 <- "ant"
v2 <- "pant"
return(list(v1, v2)) }

# [,1] [,2]
# result.1 "ant" "pant"
# result.2 "ant" "pant"
# result.3 "ant" "pant"
# result.4 "ant" "pant"
# result.5 "ant" "pant"
# result.6 "ant" "pant"
# result.7 "ant" "pant"
# result.8 "ant" "pant"

stopCluster(cl)

关于r - Foreach 组合输出 - 特定向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46353429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com