1

我将 R markdown 与 LaTeX 结合使用来创建动态 PDF 报告。要生成汇总表,我使用kableExtra包。

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

示例:考虑 R 数据框mtcars[1:10, 1:5]。使用它会被渲染成一些漂亮的表格:

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

渲染表

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

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

4

1 回答 1

7

如您所见,cell_spec如果您想为整行或整列着色,该函数很有用。由于kableExtra不提供直接编辑单个单元格的功能,因此“最简单”的方法是将 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

于 2018-05-02T13:49:59.520 回答