作者girl5566 (5566520)
看板R_Language
标题[问题] foreach 与 Parallel 回传多个matrix?
时间Wed Mar 8 23:19:18 2017
文章分类提示:
- 问题: 当你想要问问题时,请使用这个类别。
[问题类型]:
程式谘询(我想用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)
}
[程式范例]:
library(foreach)
library(doParallel)
#setup parallel backend to use many processors
cores=detectCores()
cl <- makeCluster(cores[1]-1) #not to overload your computer
registerDoParallel(cl)
finalMatrix <- foreach(i=1:150000, .combine=cbind) %dopar% {
tempMatrix = functionThatDoesSomething() #calling a function
#do other things if you want
tempMatrix
#Equivalent to finalMatrix = cbind(finalMatrix, tempMatrix)
}
#stop cluster
stopCluster(cl)
Ref:
http://tinyurl.com/hdmlpsh
[环境叙述]:
Win7 64bit, R 3.3.1
[关键字]:
Parallel
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.195.56.139
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1488986361.A.F22.html
1F:推 cywhale: dtcomb <- function(...) {rblindlist(list(...))} 03/09 12:31
2F:→ cywhale: out <- foreach(..,.combine="dtcomb",..) %dopar% {.. 03/09 12:33
3F:→ cywhale: ... return(your_temp_dataframe)}) 03/09 12:34