KableExtra table 适用于编织按钮,但在从单独的文件呈现时不起作用

KableExtra table works with knit button but does not work when rendered from a separate file

我知道有人问过类似的问题。但是,我已经尝试了所有这些解决方案,正如您将在我的代码中看到的那样,其中 none 已经奏效。最奇怪的是,我的代码已经正常工作了几个月,直到本周才停止工作。以下代码位于 RMD 文件中,并在 R Studio 上使用编织按钮时完全按照我想要的方式生成 table:

---
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")
```

table 看起来像这样:

它还会继续到下一页。

我需要多次生成此报告,因此我有一个单独的 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 tables 外,我的报告中的所有内容看起来都一样。这是 table 现在的样子的图片:

这是我第一次就SO提问。对于让我的代码正常工作的任何帮助,以及关于如何在未来更好地格式化我的问题的建议,我将不胜感激。

我认为您需要为 cell_speckable 调用指定格式 (latex)。我真的不明白为什么,但似乎有效..

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")