在 RMarkdown 中编织,所有的图都打印在所有 pdf 中,而不是每个 pdf 中的相应图

knitting in RMarkdown, all of the plots print in all the pdfs instead of corresponding plot in each pdf

我正在尝试自动生成每个季度必须生成的 pdf 报告,或者 so.The 以下是我的 RMarkdown 模板示例 (template.Rmd):

---
title: "Data Report"
output:
pdf_document:
fig_caption: no
subtitle: Quarter 4 Report
---

###This is just a sample of my code for the calculation

Figure 1. Transfers to Hospital
```{r, echo=FALSE, fig.width=12, fig.height=6}
library(ggplot2)

Facility.graph <- function(df, na.rm = TRUE, ...){ #Function to create plots

# list of hospitals in data to loop over 
Facility_list <- unique(df$Facility)

# for loop to produce ggplot2 graphs 
for (i in seq_along(Facility_list)) { 

# create plot for each hospital in df 
plots1 <- ggplot(rbind(subset(df, df$Facility==Facility_list[i]), subset(df, df$Facility=="RCI Average")), aes(Date, y = get(names(df)[3]), group = Facility, colour = Facility)) + geom_point(size=4) + labs(x="", y="Number of Transfers")

print(plots1)

 }
} 

Facility.graph1(byfacility_graph_data[,1:3])

```

"byfacility_graph_data" 是数据框,其前两列是类别(设施和日期),第三列包含医院的转诊次数。我的问题是当我 运行 R 中的代码(见下文)为每个医院编织和创建一个 pdf 文档时,所有的图都出现在所有的 pdf 中,而不是每个 pdf 对应的图。

# The R code for knitting the above template.Rmd script to create a pdf document for each hospital with corresponding graphs

library(knitr)

Facility_list <- unique(byfacility_graph_data$Facility)

setwd("C:\User\Desktop\reports")

# create for loop to produce ggplot2 graphs 

for (i in Facility_list){
rmarkdown::render(input = "template.Rmd", output_format = "pdf_document", output_file = paste0("reports", i, ".pdf", sep=''))
}

我能够通过修复我的 Rmarkdown 模板来解决我的问题:

---
title: "Data Report"
output:
pdf_document:
fig_caption: no
subtitle: Quarter 4 Report
---

###This is just a sample of my code for the calculation

Figure 1. Transfers to Hospital
```{r, echo=FALSE, fig.width=12, fig.height=6, fig.keep='first'}

library(ggplot2)

Facility.graph <- function(df, na.rm = TRUE, ...){ #Function to create plots

# list of hospitals in data to loop over 
Facility_list <- unique(byfacility_graph_data$Facility)

for (i in seq_along(Facility_list)) { # for loop to produce ggplot2 graphs 

# create plot for each hospital in df 
plots1 <- ggplot(df, aes(Date, y = get(names(df)[3]), group = Facility, colour = Facility)) + geom_point(size=4) + labs(x="", y="Number of Transfers")

print(plots1)

 }
} 

Facility.graph(df) #Calling the function

```

修复R代码如下:

library(knitr)

Facility_list <- unique(byfacility_graph_data$Facility)

setwd("C:\Users\Desktop")

for (j in unique(byfacility_graph_data$Facility)){

df<-byfacility_graph_data[which(byfacility_graph_data$Facility==j|byfacility_graph_data$Facility=="Average"), 1:3]


rmarkdown::render(input = "template.Rmd",output_format = "pdf_document", output_file = paste0("reports_ ", j, ".pdf", sep=""))
}

这给了我所有的报告并根据需要更正了图表。谢谢大家:)