基于条件设置Shiny应用中DataTable单元格背景颜色
Shiny DataTable条件格式化:匹配同行列值时更改单元格背景色
要实现当第二列(Counts)的值与同一行第三列(Comparison)的值相等时,改变第二列对应单元格的背景色,你可以通过DT包的rowCallback参数注入自定义JavaScript代码来实现。以下是修改后的完整代码:
## app.R ## library(shiny) library(shinydashboard) library(DT) comp <- structure(list( Source = c("dates1", "dates2", "dates3", "dates4", "dates5", "dates6", "dates7"), Counts = c(12L, 15L, 17L, 10L, 12L, 7L, 9L), Comparison = c(15, 15, 15, 15, 15, 15, 15), Difference = c(3, 0, -2, 5, 3, 8, 6) ), row.names = c(NA, -7L), class = "data.frame") ui <- dashboardPage( dashboardHeader(), dashboardSidebar(), dashboardBody( datatableOutput("table") ) ) server <- function(input, output) { output$table <- renderDataTable({ datatable( comp, rowCallback = JS( "function(row, data) {", // 索引从0开始,第二列对应data[1],第三列对应data[2] " if (data[1] === data[2]) {", // 给第二列单元格设置背景色(这里用黄色示例) " $('td:eq(1)', row).css('background-color', '#FFFF00');", " }", "}" ) ) }) } shinyApp(ui, server)
关键说明
rowCallback的作用:这个参数允许我们在每一行渲染完成后执行自定义JS逻辑,用来修改行内单元格的样式。- 索引对应关系:DT表格的
data数组是从0开始索引的,所以第二列(Counts)对应data[1],第三列(Comparison)对应data[2]。 - 样式自定义:你可以修改
#FFFF00为任意你需要的颜色代码(比如#E8F4F8浅蓝色),或者添加其他CSS样式(如字体颜色)。
内容的提问来源于stack exchange,提问作者firmo23
相关产品推荐
相关产品推荐

