在 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=""))
}
这给了我所有的报告并根据需要更正了图表。谢谢大家:)
我正在尝试自动生成每个季度必须生成的 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=""))
}
这给了我所有的报告并根据需要更正了图表。谢谢大家:)