【问题标题】:How to add text to each individual-exported PDF report in R or RMarkdown?如何在 R 或 RMarkdown 中为每个单独导出的 PDF 报告添加文本?
【发布时间】:2019-05-01 10:01:50
【问题描述】:

感谢您阅读此问题。我有一个包含 5 个参与者/行和 8 个变量/列的数据集。我能够将数据集的每个参与者/行导出到单独的 pdf 文件中,并根据参与者名称命名导出的 pdf 文件(感谢@Jilber Urbina)。我需要帮助来解释如何在表格前添加文本(格式很好),文本应该是这样的:“尊敬的客户,此报告提供了您在性能测试中的分数摘要” 附件是解释这个问题的解释性代码.

# Creating a dataset for explanation:
df <- data.frame(matrix(ncol = 8, nrow = 5))
x <- c("Participants", "V1","V2", "V3",  "V4","V5", "V6","V7")
colnames(df) <- x

df$Participants= c("Elizabeth",
                   "Emily",
                   "Cristie",
                   "Orville",
                   "Janetta")
df$V1 = runif(5, min=0, max=10)
df$V2 = runif(5, min=0, max=10)
df$V3 = runif(5, min=0, max=10)
df$V4 = runif(5, min=0, max=10)
df$V5 = runif(5, min=0, max=10)
df$V6 = runif(5, min=0, max=10)
df$V7 = runif(5, min=0, max=10)

summary(df)

# Printing each participant/row in individual report:

library(gridExtra)
apply(df, 1, function(x){
  pdf(paste0(x[1], ".pdf"), width=10)
  grid.table(data.frame(t(x)))
  dev.off()
})

如何为每个单独的报告添加文本/消息,以便客户可以阅读文本/消息并查看他们的绩效分数?非常感谢。

【问题讨论】:

  • 您是否考虑过使用rmarkdown::render 呈现A4 pdf 报告?您必须创建一个简单的 RMarkdown 模板,然后可以使用 YAML 选项 params 输入单个数据。
  • 谢谢,马丁。我不知道如何在上述主要问题中提供的“应用”功能中添加它。你能举个例子吗?再次感谢。 @MartinSchmelzer

标签: r r-markdown


【解决方案1】:

您可以渲染 rmarkdown 文档,而不是使用 pdf 设备。拿这个 R 脚本

# Creating a dataset for explanation:
df <- data.frame(matrix(ncol = 8, nrow = 5))
x <- c("Participants", "V1","V2", "V3",  "V4","V5", "V6","V7")
colnames(df) <- x

df$Participants <- c("Elizabeth", "Emily", "Cristie", "Orville","Janetta")
df$V1 = runif(5, min=0, max=10)
df$V2 = runif(5, min=0, max=10)
df$V3 = runif(5, min=0, max=10)
df$V4 = runif(5, min=0, max=10)
df$V5 = runif(5, min=0, max=10)
df$V6 = runif(5, min=0, max=10)
df$V7 = runif(5, min=0, max=10)

summary(df)

# Printing each participant/row in individual report:
apply(df, 1, function(x){
  print(x)
  fname <- paste0(x[1], ".pdf")
  rmarkdown::render(input="template.Rmd", 
                    output_file = fname,
                    output_format = "pdf_document",
                    params = list(id=x[1], data=x[-1]))
})

使用不同的参数呈现 rmarkdown 文档 template.Rmd。它的内容是

---
output: pdf_document
params:
  id: NULL
  data: NULL
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## Evaluation

Dear `r params$id`, This report provides a summary of your scores on the performance test.

```{r, echo=F}
knitr::kable(params$data)
```

您可以随意设置输出样式。这个简单的模板给你

【讨论】:

  • 太棒了,非常感谢@martinschmelzer。感谢您的帮助
  • 我想知道您是否可以帮助我提供一个稍微(我认为)更复杂的类似案例示例:stackoverflow.com/questions/69904796/…
猜你喜欢
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
  • 1970-01-01
  • 2015-07-01
  • 2019-10-10
  • 2016-01-26
相关资源
最近更新 更多