【发布时间】:2021-11-20 17:01:43
【问题描述】:
我正在尝试将 doParallel 与 RMarkdown 一起使用。 R 代码调用一个名为report.RMD 的脚本。目标是从 iris 数据集中生成 3 个 html 报告,每个报告以物种命名,其中的表格被过滤到该物种。 问题是,尽管呈现了报告,但表格并没有被过滤到该物种,例如,virginica.html 文档列出了 versicolor 物种。这似乎是一个并行化问题,因为当 %dopar% 更改为 %do% 时,会按预期生成 html 报告。
更广泛的目标是在比本示例更大的范围内使用 RMarkdown 并行处理,但我仅使用以下示例。
R代码是:
library(doParallel)
library(tidyverse)
iris_list<-c("virginica","versicolor", "setosa")
no_cores <- detectCores() - 1
cl <- makeCluster(no_cores)
registerDoParallel(cl)
foreach(i = 1:length(iris_list), .packages = (.packages())) %dopar% {
cat<-iris_list[i]
iris2<-iris%>%filter(Species==cat)
rmarkdown::render("report.RMD",
output_file = paste0(cat, ".html"))
}
stopCluster(cl)
RMD 代码是:
---
title: "Untitled"
date: "28 September 2021"
output: html_document
---
```{r table, echo=FALSE}
iris2
【问题讨论】:
标签: r r-markdown doparallel