RMarkdown 文档中的条件格式表

Posted

技术标签:

【中文标题】RMarkdown 文档中的条件格式表【英文标题】:Conditional formatting tables in RMarkdown documents 【发布时间】:2014-10-08 12:48:04 【问题描述】:

例如,我可能想使用以下规则为单元格着色:

(经过编辑以简化)

    蓝色如果 > 4 如果 = 3.5 则不填充 如果 >= 3 和 如果

Create tables with conditional formatting with RMarkdown + knitr 对我没有帮助,因为我不只是想突出显示满足一组标准的单元格。

示例 rmd:

---
title: "Untitled"
output: html_document
---

```r, message = FALSE, results = "asis"
library(knitr)
library(dplyr)
head(iris) %>% kable
```

如果需要的话,我将采用DataTables 的解决方案

【问题讨论】:

你为什么不把这个答案概括为使用n个条件然后回答你自己的问题? @rawr 如果我理解正确的话,pander 利用降价中的*** 来“标记”单元格以突出显示,因此不会推广到 n > 2。好吧,我想我在 OP 中有一个不好的例子,因为 n=2,但我正在寻找更灵活的东西。 这三个条件可以使用markdown,例如使用“强调”而不是“蓝色”、“强调/斜体”而不是“橙色”和“无额外格式”来表示“无填充”。 如果您使用的是 html,您可以在表格中搜索特定值,例如 4,然后将该值替换为 <td bgcolor="#00ff00">4</td>,然后瞧!所有 4 秒的绿色细胞 其实,我认为这在hmtl5中已被弃用,所以最好使用css:<td style="background-color:green"> 【参考方案1】:

您好,这里有一个使用来自包ReporteRs 的函数FlexTable 的解决方案。此函数旨在创建 Word 表格,但您可以使用 as.html 从 FlexTable 对象中获取 html 代码:

---
title: "Untitled"
output: html_document
---


```r, results='asis', warning=FALSE, message=FALSE
library(ReporteRs)
data(iris)
irisFT = FlexTable( iris )

vars <- c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width")
for (i in vars) 
  irisFT[iris[, i] < 3, i] = cellProperties( background.color = "orange" )
  irisFT[iris[, i] >= 3 & iris[, i] < 3.5, i] = cellProperties( background.color = "yellow" )
  irisFT[iris[, i] > 4, i] = cellProperties( background.color = "#81DAF5" )


cat(as.html(irisFT))
```

更多示例,请访问https://davidgohel.github.io/ReporteRs/articles/FlexTable.html

【讨论】:

打印时注意:引导打印媒体样式规则默认添加到您的文档中,并将打印具有白色(透明)背景的表格单元格。要重新启用您的单元格颜色,一种选择是在您的 yaml 前端问题中将您的主题设置为 null。【参考方案2】:

knitr 包含带有 jQ​​uery DataTables 示例的小插图。

vignette("datatables", package = "knitr")

【讨论】:

以上是关于RMarkdown 文档中的条件格式表的主要内容,如果未能解决你的问题,请参考以下文章

Shiny R中的条件格式多个表

腾讯在线文档根据单选的内容修改背景颜色

腾讯在线文档根据单选的内容修改背景颜色

Excel中基于文本字段的数据透视表中的条件格式

如何将条件格式从一个文档复制到另一个文档?

如何将条件格式应用于 odt 文件?