Как добавить текст в каждый отдельный PDF-отчет в R или RMarkdown? - PullRequest
1 голос
/ 01 мая 2019

Спасибо за чтение этого вопроса.У меня есть набор данных, содержащий пять участников / строк с 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()
})

Как добавить текст / сообщение к каждому отдельному отчету, чтобы клиенты могли прочитать текст / сообщение, а также посмотреть результаты своей работы?Спасибо много.

1 Ответ

1 голос
/ 04 мая 2019

Вместо использования устройства pdf вы можете отображать rmarkdown документы. Возьми этот скрипт 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)
```

Вы можете оформить вывод так, как вам нравится. Этот простой шаблон дает вам

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...