RMarkdown:根据条件

时间:2015-09-29 18:54:27

标签: javascript html css r r-markdown

我使用xtable(HTML)在R markdown中成功生成了一个表。

enter image description here

现在我想根据单元格中的值对第3列进行颜色格式化。 说最高的红色值,最低的绿色,并保持不同的色调。 单元格中的值是动态生成的。像excel这样的事情很容易使用条件格式化选项。我们可以使用css在R中执行此操作!任何帮助和建议欢迎..谢谢:)

1 个答案:

答案 0 :(得分:0)

您可以在RMarkdown脚本中使用jQuery,如下所示:

---
title: "Title"
author: "Yourname"
date: "June 16, 2016"
output: html_document
---

<script>
    $(document).ready(function() {
        $td = $('#myTable tr:not(:has(th)) :nth-child(5)');
        var entries = new Array();
        $td.each(function() { 
          entries.push(parseFloat($(this).html()));
        })
        var minimum = Math.min.apply(Math, entries);
        var maximum = Math.max.apply(Math, entries);

        $("#myTable tr :nth-child(5):contains('" + minimum + "')").css('background-color', 'green');
        $("#myTable tr :nth-child(5):contains('" + maximum + "')").css('background-color', 'red');
    });
</script>

```{r, echo=F, results='asis'}
library(xtable, quietly = T)
myTable <- xtable(head(mtcars))    
print(myTable, type="html", html.table.attributes='border=1 id=myTable')
```

JavaScript会读出第5列的所有值(:nth-child(5),包括行名称),并检查最小值和最大值。然后,它使用这些值匹配该列的单元格并应用CSS属性。 请注意,我为该表指定了一个ID(#myTable)。因此,如果您有多个表,JavaScript可以选择正确的表。

enter image description here