Я пытаюсь создать несколько отчетов и связать их в pdf в R. У меня есть скрипт, который генерирует фрейм данных, который я хочу связать. Затем у меня есть для l oop, который разбивает данные, соответствующие каждому студенту. Этот цикл выполняет вызов для записной книжки .Rmd, где я указал вызов kable для создания таблицы. Вот пример моего скрипта Come
R:
# Split files ####
student_IDs <- unique(final_scores$ID)
nStudents <- length(student_IDs)
student_names <- unique(final_scores$Name)
for (iStudent in 1:nStudents) {
scores <- filter(final_scores, ID == student_IDs[iStudent]) %>%
select(-c(ID, Name))
rmarkdown::render(envir = new.env(),
input = "grades_handout.Rmd",
output_format = "pdf_document",
output_file = paste(student_names[iStudent], student_IDs[iStudent], "assignsubmission_file", student_names[iStudent], "HW3_Grade_",
sep = "_"),
output_dir = file.path(root_dir, "Rubrics"))
}
Rmd:
---
header-includes:
- \usepackage{booktabs}
- \usepackage{longtable}
- \usepackage{array}
- \usepackage{multirow}
- \usepackage{wrapfig}
- \usepackage{float}
- \usepackage{colortbl}
- \usepackage{pdflscape}
- \usepackage{tabu}
- \usepackage{threeparttable}
- \usepackage{threeparttablex}
- \usepackage[normalem]{ulem}
- \usepackage{makecell}
- \usepackage{xcolor}
output: pdf_document
classoption: landscape
geometry: margin=2cm
---
\pagenumbering{gobble}
```{r setup, include=F}
library(kableExtra)
library(tidyverse)
```
```{r echo=F, warning=FALSE}
kable(grade, format = "latex",
booktabs = T,
align = "c") %>%
column_spec(1:4, width = "6em") %>%
kable_styling(font_size = 12) %>%
row_spec(0, align = "c", bold = T)
```
```{r echo=F, warning=F}
kable(scores, format = "latex",
longtable = T, #linesep = "",
booktabs = T,
col.names = c("Q.", "Level I", "Level II", "Level III", "Value",
"Correct Answer", "Your Answer",
"Points answer", "Points work", "Feedback"),
align = c("c", "c", "c", "c", "c", "l", "l", "c", "c", "l")) %>%
kable_styling(latex_options = c("repeat_header", "striped"), full_width = F) %>%
column_spec(6:7, width = "15em") %>%
column_spec(1:4, width = "1.5em") %>%
column_spec(5, width = "1.5em") %>%
column_spec(8:9, width = "3em") %>%
column_spec(10, width = "15em") %>%
row_spec(0, align = "c")
```
Если я нажму «вязать», процесс будет работать без сбоев, и документ готов. Однако при вызове из скрипта с помощью render () некоторые параметры, выбранные в kable, вызывают сбои во время рендеринга. Использование опции "striped" внутри вызова kable_styling () приводит к следующему выводу:
! Misplaced \noalign.
\rowcolor ->\noalign
{\ifnum 0=`}\fi \global \let \CT@do@color \CT@@do@color...
l.113 \rowcolor
{gray!6} Incorrect coefficient for beta(b).\\
Я понимаю, что это, вероятно, связано с тем, что ширина столбца делает некоторые ячейки несколькими строками, но исправьте меня, если Я не прав. Дело в том, что я не понимаю, в чем разница при нажатии кнопки «Вязать» по сравнению с использованием rmarkdown :: render ().
Если кто-нибудь из вас мог бы указать мне, как включить отсутствует информация в заголовке YAML (если это необходимо, я должен был сделать это с пакетами, которые использует kable, в противном случае появились другие ошибки) или как дать больше информации для render (), чтобы он мог работать правильно.
Бест, Эдуардо