在 R markdown cell_spec 中使用 kableExtra 选择并着色单个 table 单元格

Selecting and colouring single table cells with kableExtra in R markdown cell_spec

我结合使用 R markdown 和 LaTeX 创建动态 PDF 报告。为了生成摘要 tables,我使用 kableExtra 包。

我想更改单个单元格的样式。

示例:考虑 R 数据帧 mtcars[1:10, 1:5]。使用它会被渲染成一些不错的 table:

kable(mtcars[1:10, 1:5], format="latex", booktabs = T)` 

现在我想改变某些单元格的样式。假设 mpg 的第 2 和第 8 个条目应该是绿色,disp 的第 4 个和第 5 个条目应该是橙色和斜体,drat 应该是红色和粗体。同样的单元格应该是这样的,无论单元格中有哪些条目。

我完全了解文档和示例,例如特定于行和列的着色。但是 cell_spec 的文档仅处理取决于单元格值的条件逻辑,而我想独立地为单元格着色。

如您所见,如果要为整行或整列着色,cell_spec 函数很有用。由于 kableExtra 不提供直接编辑单个单元格的功能,因此 "easiest" 的方法是直接将 LaTeX 命令粘贴到单元格中。我在类似的答案中使用了这种方法 :

---
output: pdf_document
header-includes:
  - \usepackage{booktabs}
---

```{r pressure, echo=FALSE}

df <- mtcars[1:10, 1:5]

df[1,5] <- paste0("\underline{", df[1,5], "}")
df[1,1] <- paste0("\textcolor{red}{", df[1,1], "}")
df[2,2] <- paste0("\textcolor{green}{\textbf{", df[2,2], "}}")
# # Equivalent to:
# library(kableExtra)
# df[1, 5] <- cell_spec(df[1, 5], "latex", underline = T)
# df[1, 1] <- cell_spec(df[1, 1], "latex", color = "red")
# df[2, 2] <- cell_spec(df[2, 2], "latex", color = "green", bold = T)

knitr::kable(df, format="latex", booktabs = T, escape = F)

```

您可以调整它以适用于您的示例。您可能想在此处查看可用的 LaTeX 格式:https://www.sharelatex.com/learn/Bold,_italics_and_underlining