自定义自动R Markdown报告

我正在尝试通过使用RMarkdown的训练中心来创建自动健身测试报告。我正在使用相同的数据帧结构和类似的代码构建之前在主题here上提出的问题。

我想根据集线器稍微定制每个RMarkdown报告,同时仍然允许它是一个自动化的过程(即1个脚本+1个.rmd)。例如,所有的集线器都会有一个大跳跃图,但对于A,我想要一个大跳跃图和一个10米冲刺图。

我尝试过在YAML和render函数中使用params,但到目前为止还没有成功。

样本数据

         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 =假)

库(Rmarkdown)

库(Knitr)

库(Dplyr)

库(Ggplot2)

WT <- read.csv("WT.csv")

子组<-子集(WT,集线器==集线器)

subgroup_Broad <-子组%>%

filter(测试== "Broad_Jump") %>%

select(日期、运动员、中心、平均值)

```javascript

ggplot(subgroup_Broad,aes(x=Date,y= Average)) +

geom_point()

```javascript

参数$plot2

我不确定是使用params、渲染文件还是其他方法来完成此任务。有几个集线器和测试,所以我尽量避免为每个集线器使用单独的Rmarkdown模板。

转载请注明出处:http://www.0591kyj.com/article/20230526/2406996.html