如何在R的datatable中按条件为指定列添加红色样式?
在DT包的DataTable中实现行内条件着色
要让val1和val2列中满足条件的数值显示为红色,你可以借助formatStyle()结合JavaScript表达式实现——因为着色条件依赖同一行的mymean值,需要动态判断每行的情况。
完整代码如下:
library(tibble) library(DT) mydf <- tribble( ~x, ~mymean, ~val1, ~val2, "a", 3, 2, 8, "b", 5, 6, 1 ) datatable(mydf) |> formatStyle( columns = c("val1", "val2"), color = JS("function(value, row) { const mean = row.mymean; if (value > 2 * mean || value < mean / 2) { return 'red'; } return ''; // 使用表格默认文字颜色 }") )
代码说明:
- 通过
JS()传入自定义函数,函数的value参数是当前单元格的数值,row参数包含当前行的所有数据,通过row.mymean可以获取对应行的均值。 - 当数值大于
mymean的两倍,或者小于mymean的二分之一时,返回'red'设置文字颜色为红色;否则返回空字符串,保留表格默认的文字颜色。
内容的提问来源于stack exchange,提问作者Damien Dotta
相关产品推荐
相关产品推荐

