R 使用DT Select行保持单元格颜色

R 使用DT Select行保持单元格颜色,r,shiny,dt,R,Shiny,Dt,我有一个DT数据表,它的单元格根据不同的变量着色。当您单击一行时,它会高亮显示相应绘图中的值,与示例中完全相同。但是,选择行时,高亮显示该行的新颜色将替代现有颜色。我希望该行高亮显示,但如果单个单元格已着色,则该单元格将保持其颜色 下面的截图显示了我得到的和我想要的。我修改了Yihui的代码,在截图下面制作了一个可复制的示例。任何帮助都将不胜感激 库(闪亮) 图书馆(DT) ui您可以通过一些自定义CSS实现这一点。将此代码块添加到fluidPage: tags$head( ta

我有一个DT数据表,它的单元格根据不同的变量着色。当您单击一行时,它会高亮显示相应绘图中的值,与示例中完全相同。但是,选择行时,高亮显示该行的新颜色将替代现有颜色。我希望该行高亮显示,但如果单个单元格已着色,则该单元格将保持其颜色

下面的截图显示了我得到的和我想要的。我修改了Yihui的代码,在截图下面制作了一个可复制的示例。任何帮助都将不胜感激

库(闪亮)
图书馆(DT)

ui您可以通过一些自定义CSS实现这一点。将此代码块添加到
fluidPage

  tags$head(
    tags$style(
      HTML(
      "table.dataTable tbody tr.selected td {
       color: white !important;
       background-color: #E34755 !important;}"
      )
      )
  ),
您还可以将CSS片段放入一个独立文件中,并将其放置在应用程序文件旁边的
www
目录中。更多信息请参见此处


您可以为背景色(
红色
)定义CSS类,并使用
行回调将其添加到所需的单元格中。然后添加以下CSS:

.red {
  background-color: #e34755;
}
table.dataTable tr.selected td.red {
  background-color: #e34755 !important;
}
应用程序:

library(shiny)
library(DT)

rowCallback <- c(
  "function(row, dat, displayNum, index){",
  "  if(dat[1] < 5){",
  "    $('td:eq(1)', row).addClass('red');",
  "  }",
  "}"
)

css <- "
.red {
  background-color: #e34755;
}
table.dataTable tr.selected td.red {
  background-color: #e34755 !important;
}
"

ui <- fluidPage(

  tags$head(
    tags$style(HTML(css))
  ),

  title = 'Select Table Rows',

  fluidRow(
    column(6, DTOutput('x1')),
    column(6, plotOutput('x2', height = 500))
  )
)

server <- function(input, output) {

  output$x1 <- renderDT({
    datatable(cars,
              options = list(
                columnDefs = list(list(targets = 3,visible = FALSE)),
                rowCallback = JS(rowCallback)
              )
    )
  })

  # highlight selected rows in the scatterplot
  output$x2 <- renderPlot({
    s <- input$x1_rows_selected
    par(mar = c(4, 4, 1, .1))
    plot(cars[ ,-3])
    if (length(s)) points(cars[s, , drop = FALSE], pch = 19, cex = 2)
  })
}

shinyApp(ui, server)
库(闪亮)
图书馆(DT)

这是非常有用的,但不是我想要的。在我的特定应用程序中,用户可以看到哪些单元格是彩色的,这一点非常重要。因此,我理想情况下希望单个单元格的颜色保持不变,而行的其余部分则以默认的淡蓝色突出显示。最好有一个特定于表的突出显示,上面将更改所有表的颜色!这正是我想要的。非常感谢。