Re: [問題] foreach 與 Parallel 回傳多個matrix?
我之前的做法是 回傳list
comb <- function(...){
mapply('rbind',..., SIMPLIFY = FALSE)
}
tmp <- foreach(i = 1:n, .combine = comb, multicombine = TRUE,
.init = list(list(),list())) %dopar% {
return(list(list.1, list.2))
}
※ 引述《celestialgod (天)》之銘言:
: ※ 引述《girl5566 (5566520)》之銘言:
: : 文章分類提示:
: : - 問題: 當你想要問問題時,請使用這個類別。
: : [問題類型]:
: : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
: : [軟體熟悉度]:
: : 新手(沒寫過程式,R 是我的第一次)
: : [問題敘述]:
: : 原本程式會有兩個global變數,去承接for loop內的數值,但由於效能的關係
: : 目前想把for loop改為 Parallel的方式,但僅查詢到回傳一個的方式,
: : 是有解法可以處理這種狀況呢?
: : 原始情境:
: : df <- NULL
: : df1 <- NULL
: : for(i in 1:10000){
: : # 經運算後得到temp與temp1
: : temp <- c(1,2,3,4)
: : temp1 <- c(1,2,3,4)
: : df <- rbind(df,temp)
: : df1 <- rbind(df1, temp1)
: : }
: 我對foreach不熟,不過foreach如果接doParallel底層是用parLapplyLB
: 我這裡直接用parallel的parLapplyLB直接示範怎麼做~~~
: library(parallel)
: cl <- makeCluster(detectCores()-1L)
: valueList <- parLapplyLB(cl, 1:150000, function(x){
: temp <- rnorm(4)
: temp1 <- rnorm(3)
: return(list(temp, temp1))
: })
: df <- do.call(rbind, lapply(valueList , `[[`, 1))
: df1 <- do.call(rbind, lapply(valueList , `[[`, 2))
: stopCluster(cl)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 162.237.102.128
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1489115961.A.DA5.html
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章