我正在尝试使用 styleInterval (在 DT 包的 formatStyle 内)将条件格式应用于数据表的一行。我在网上找到的所有示例要么用于格式化整个数据表,限制涉及的列,要么根据单列中的值格式化整个行。
我想将涉及的行限制为以下示例中的第一行(“entity1”)。
entity <- c('entity1', 'entity2', 'entity3')
value1 <- c(21000, 23400, 26800)
value2 <- c(21234, 23445, 26834)
value3 <- c(21123, 234789, 26811)
value4 <- c(27000, 23400, 26811)
entity.data <- data.frame(entity, value1, value2, value3, value4)
DT::datatable(entity.data) %>%
formatStyle(columns = 2:5,
backgroundColor = styleInterval(cuts = c(21200,22000),
values = c('red','white','green')))
Run Code Online (Sandbox Code Playgroud)
我是否缺少使用 formatStyle 执行此操作的方法,或者我是否需要使用另一个函数/包来解决此问题?谢谢!
用一个rowCallback:
library(DT)
entity <- c('entity1', 'entity2', 'entity3')
value1 <- c(21000, 23400, 26800)
value2 <- c(21234, 23445, 26834)
value3 <- c(21123, 234789, 26811)
value4 <- c(27000, 23400, 26811)
entity.data <- data.frame(entity, value1, value2, value3, value4)
rowCallback <- c(
"function(row, dat, displayNum, index){",
" if(index == 0){",
" for(var j=2; j<dat.length; j++){",
" var x = dat[j];",
" var color = x <= 21200 ? 'red' : x <= 22000 ? 'white' : 'green';",
" $('td:eq('+j+')', row)",
" .css('background-color', color);",
" }",
" }",
"}"
)
datatable(entity.data,
options =
list(rowCallback = JS(rowCallback))
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
653 次 |
| 最近记录: |