【问题标题】:Selecting and colouring single table cells with kableExtra in R markdown cell_spec在 R markdown cell_spec 中使用 kableExtra 选择和着色单个表格单元格
【发布时间】:2018-10-11 14:30:17
【问题描述】:

我将 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 的文档只处理取决于单元格值的条件逻辑,而我想独立地为单元格着色。

【问题讨论】:

    标签: pdf r-markdown knitr kableextra


    【解决方案1】:

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

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

    【讨论】:

    • 我为不想记住太多乳胶的人添加了一些cell_spec 示例;)
    • @Hao 我更喜欢那个方法 :) 没想到你可以那样做
    • 郝,感谢您添加乳胶等价物。我需要更多的灵活性(单元格部分加粗)——希望这样可以解决问题!
    • 如何在html输出中实现这一点?
    • 来不及回答,但建议查看文档:cran.r-project.org/web/packages/kableExtra/vignettes/…
    猜你喜欢
    • 2019-10-21
    • 2019-04-19
    • 2018-08-31
    • 2020-11-26
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    相关资源
    最近更新 更多