Re: [問題] foreach 與 Parallel 回傳多個matrix?

看板R_Language作者 (我要低調 拯救形象)時間8年前 (2017/03/10 11:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
我之前的做法是 回傳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
文章代碼(AID): #1OmXivsb (R_Language)
文章代碼(AID): #1OmXivsb (R_Language)