我知道有人问过类似的问题。但是,正如您在我的代码中看到的那样,我已经尝试了所有这些解决方案,但没有一个起作用。最奇怪的部分是我的代码已经正常运行了几个月,而直到本周才停止工作。以下代码位于RMD文件中,并在使用R Studio上的“编织”按钮时完全按照我的要求生成表:
---
title: "Cars"
author: "xxx"
date: '`r format(Sys.Date(), "%B-%d-%Y")`'
always_allow_html: yes
output: pdf_document
classoption: portrait
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}
---
```{r}
library(kableExtra)
library(dplyr)
data <- cars
Portfolio <- c(4,7)
data%>%
mutate(
speed = cell_spec(speed, background= ifelse(speed %in% Portfolio, "yellow", "white"))
) %>%
kable(escape = F, longtable= T) %>%
kable_styling("striped", full_width = F, latex_options = "repeat_header")
```
该表如下所示:
它也继续到下一页。
我需要多次生成此报告,因此我有一个单独的R文件,在其中我将先前代码的呈现循环到单独的PDF文件中。
# load packages
library(knitr)
library(rmarkdown)
library(kableExtra)
library(dplyr)
Portfolio <- c( 4,7)
# for each bond in the portfolio create a report
# these reports are saved in output_dir with the name specified by output_file
for (i in 1:length(Portfolio)){
Bond <- Portfolio[i]
rmarkdown::render("Table.Rmd" ,
output_format = "pdf_document",
output_file = paste(Bond, ".pdf", sep=''),
output_dir = paste('Reports_',format(Sys.Date(), "%b-%d-%y")),
envir = new.env(
Bond <- Portfolio[i]
))
}
此代码呈现PDF,并且除kableExtra表外,报告中的所有内容均相同。这是这张桌子现在的样子:
这是我第一次问关于SO的问题。对于使我的代码正常运行的任何帮助,以及将来如何更好地格式化我的问题的建议,我将不胜感激。
答案 0 :(得分:0)
我认为您需要同时为cell_spec
和kable
调用指定格式(乳胶)。我真的不明白为什么,但是似乎可以工作。
data %>%
mutate(
speed = cell_spec(speed, format = "latex", background= ifelse(speed %in% Portfolio, "yellow", "white"))
) %>%
kable(format = "latex", escape = F, longtable= T) %>%
kable_styling("striped", full_width = F, latex_options = "repeat_header")