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
包含带有 jQuery DataTables 示例的小插图。
vignette("datatables", package = "knitr")
【讨论】:
以上是关于RMarkdown 文档中的条件格式表的主要内容,如果未能解决你的问题,请参考以下文章