【发布时间】:2019-12-24 01:39:24
【问题描述】:
我正在尝试使用 RMarkdown 通过培训中心创建自动健身测试报告。我正在使用相同的数据框结构和类似的代码构建我在主题 here 上提出的上一个问题。
我想基于 hub 稍微定制每个 RMarkdown 报告,同时仍然允许它成为一个自动化过程(即 1 个脚本 + 1 个 .rmd)。例如,所有集线器都有大跳图,但对于 A,我想要一个大跳图和一个 10m 冲刺图。
我曾尝试在 YAML 和渲染函数中使用参数,但到目前为止还没有运气。
样本数据
Date Athlete Test Average Hub
1 2019-06-03 Athlete1 Broad_Jump 175.000000 A
2 2019-06-10 Athlete1 Broad_Jump 187.000000 A
3 2019-06-10 Athlete2 Broad_Jump 200.666667 B
4 2019-06-10 Athlete3 10m_Sprint 1.831333 B
5 2019-06-10 Athlete2 10m_Sprint 2.026667 B
6 2019-06-17 Athlete1 Broad_Jump 191.500000 A
7 2019-06-17 Athlete2 Broad_Jump 200.666667 B
8 2019-06-17 Athlete3 10m_Sprint 1.803667 B
9 2019-06-17 Athlete2 10m_Sprint 2.090000 B
10 2019-06-24 Athlete1 Broad_Jump 192.000000 A
R 脚本
library(rmarkdown)
library(knitr)
library(dplyr)
library(ggplot2)
WT <- read.csv("WT.csv")
WT_10m <- WT %>%
filter(Test == "10m_Sprint") %>%
select(Date, Athlete, Hub, Average)
plot2 <- ggplot(WT_10m, aes(x=Date, y=Average))+
geom_point()
for (hub in unique(WT$Hub)){
subgroup <- subset(WT, Hub == hub)
render(
input = "Hub_Test.rmd",
params = list("plot2"=plot2),
output_file = paste0('report.', hub, '.pdf'))
.Rmd 文件
---
title: "WT Monitoring: Hub"
output: pdf_document
params:
plot2: plot2
hub:
label: "hub"
value: A
choices: [A, B]
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(rmarkdown)
library(knitr)
library(dplyr)
library(ggplot2)
WT <- read.csv("WT.csv")
subgroup <- subset(WT, Hub == hub)
subgroup_Broad <- subgroup %>%
filter(Test == "Broad_Jump") %>%
select(Date, Athlete, Hub, Average)
ggplot(subgroup_Broad, aes(x=Date, y= Average)) +
geom_point()
params$plot2
我不确定是否使用参数、渲染文件或其他方法来完成此任务。有几个集线器和测试,所以我尽量避免为每个集线器使用单独的 Rmarkdown 模板。
【问题讨论】:
标签: r automation report r-markdown render