我正在尝试使用单独的R脚本中的for循环从RMarkdown自动编译多个单独的PDF报告。在编译多个报告而不是单个报告时,使用kable_styling()
包中的kableExtra
函数似乎存在问题。
这是一个单独脚本中的渲染循环:
mtcars = data.frame(mtcars)
for (car in unique(rownames(mtcars))){
rmarkdown::render('mtcars_report.Rmd', # file 2
output_file = paste("report_", car, ".pdf"))
}
这是用于所有报告的YAML标头:
title: "mtcars_report"
output:
pdf_document: default
html_document:
df_print: paged
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[normalem]{ulem}
- \usepackage[utf8]{inputenc}
- \usepackage{makecell}
- \usepackage{xcolor}
geometry: margin=.8cm
此RMD代码与此循环配合使用,并呈现每个PDF:
knitr::opts_chunk$set(echo = TRUE)
library(rmarkdown)
library(dplyr)
library(kableExtra)
mtcars = data.frame(mtcars)
cars = mtcars[rownames(mtcars)==car,]
{r, echo=FALSE, message=FALSE}
cars_table = cars %>%
select(mpg, cyl)%>%
t() %>%
kable("latex")
cars_table
这将添加一个kable_styling命令,PDF不会呈现:
cars_table = cars %>%
select(mpg, cyl)%>%
t() %>%
kable("latex") %>%
kable_styling(latex_options=c("striped", "float_right", "hold_position"),full_width = FALSE)
cars_table
我收到此错误:!未定义的控制顺序。 \ rowcolor
如果我将RMD编织成一个没有循环的文件(即cars = mtcars[rownames(mtcars)=="Merc 280",]
可以与kable_styling
一起使用。当我尝试使用RMD渲染它时,这似乎是一个问题。我已将所有软件包更新为我正在运行的知识:
update.packages(ask = FALSE, checkBuilt = TRUE) # update R packages
tinytex::tlmgr_update() # update LaTeX packages