【发布时间】:2020-06-22 18:33:57
【问题描述】:
抱歉标题不好,我不确定如何最好地传达我的问题所在。
为了提供一些背景信息,我想使用 Rmarkdown 为我们组织中的每个提供商创建一个个性化的记分卡。我已经想出了如何为每个提供者创建单独的 PDF;但是,我希望在每个人的报告上都有一个简单的条形图,突出显示提供者的位置,以便他们可以将自己与同行进行比较。以下是我目前所拥有的:
首先我创建了数据集:
############################## Create dataset and export #####################################
df = data.frame(
"Provider" = c("A","B","C","D"),
"Measure" = c(1.2,0.8,1.7,0.4)
)
write.csv(df, "pathway/df.csv")
接下来我创建了一个名为“TEST”的 Rmarkdown 文件,它在数据集中调用并包含一个图表
###################### Create Rmarkdown file named "TEST" ####################################
---
output: pdf_document
---
```{r echo=FALSE}
df <- read.csv("pathway/df.csv", stringsAsFactors = FALSE)
name <- df$Provider[i]
Dear `r name`,
This is your personalized scorecard.
```{r}
ggplot() +
geom_bar(data=df, aes(x=reorder(Provider, -Measure), y=Measure,
fill = factor(ifelse(Provider == "A", "You","Your Peers"))),
stat = "identity") +
scale_fill_manual(name = "Provider", values=c("steelblue","lightgrey"))
最后,我使用 for 循环创建了一个 R 文件,以创建与提供者一样多的 PDF
################ Run R file with loop to make separate PDFs per Provider #####################
library(knitr)
library(rmarkdown)
#Read data
df <- read.csv("pathway/df.csv", stringsAsFactors = FALSE)
#Create loop
for (i in 1:nrow(df)){
rmarkdown::render(input = "pathway/TEST.Rmd",
output_format = "pdf_document",
output_file = paste("handout_", i, ".pdf", sep=''),
output_dir = "pathway/folder/")
}
在上面 ggplot2 图表的代码中,我手动将提供程序“A”编码为蓝色突出显示,其余提供程序为灰色,但我们有超过 30 个提供程序,我不想为每个提供程序手动编码。如果 Rmarkdown 有某种方法可以自动将每个提供商的每个 PDF 报告用蓝色突出显示,其余的为灰色,那将是惊人的。非常感谢任何帮助!
【问题讨论】:
标签: r pdf ggplot2 r-markdown knitr