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

时间:2017-02-17 06:47:27

标签: r pdf dynamic report r-markdown

我正在尝试自动生成每季度左右生成的pdf报告。以下是我的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])

```

&#34; byfacility_graph_data&#34;是数据框,其前2列是类别(设施和日期),第三列包含医院的转移数量。我的问题是当我在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=''))
}

1 个答案:

答案 0 :(得分:0)

我能够通过修复我的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=""))
}

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