小编Gee*_*eek的帖子

R:Render_site不与Dopar合作

我使用foreach的dopar来解决Render_site的问题.使用简单的代码完美地运行代码.虽然我在使用dopar时遇到问题,因为在YAML文件中使用dopar之后输出会重复.

请注意,如果我使用Render而不是Render_site,则dopar可以正常工作.

您可以在下面看到我的代码:

pacman::p_load(data.table)
pacman::p_load(data.table,rmarkdown)
pacman::p_load(rmarkdown,knitr,kableExtra,dplyr)

info.rmd=readLines("test.rmd",encoding = "UTF-8")
yml=readLines("site.yml",encoding = "UTF-8")

fun<-function(r){
 out <- file( description=paste0(r,"test_.Rmd"), open="w", encoding="UTF-8") 
 write(info.rmd,file=out )
 close(con=out)
 render_site(paste0(r,"test_.Rmd"),encoding = "UTF-8",quiet = T)
 file.remove(paste0(r,"test_.Rmd"))
}
Run Code Online (Sandbox Code Playgroud)

该功能正在为简单而工作

# Working with for

for (r in 1:10){
 fun(r)

}
Run Code Online (Sandbox Code Playgroud)

我有使用dopar的问题(在这种情况下在YAML文件中重复输出)

# Not working for dopar
library(doParallel)
no_cores<-3
cl <- makeCluster(no_cores, type="SOCK")
registerDoParallel(cl)

res<-foreach (r=1:10,.combine = c,.inorder = T) %dopar% {
 library(rmarkdown)
 fun(r)
}
print(ret)
stopCluster(cl)
Run Code Online (Sandbox Code Playgroud)

回溯消息如下:

Error in { : task 10 failed - "Duplicate map key: 'output'"
4.stop(simpleError(msg, …
Run Code Online (Sandbox Code Playgroud)

parallel-processing yaml r r-markdown doparallel

7
推荐指数
0
解决办法
173
查看次数

标签 统计

doparallel ×1

parallel-processing ×1

r ×1

r-markdown ×1

yaml ×1