在R Shiny中,可以使用DT :: dataframe交互突出显示单元格吗?

时间:2019-05-17 14:32:08

标签: r shiny

使用R Shiny和DT:能否轻松地以交互方式突出显示/取消突出显示单元格?

我一直在查看DT输入$ dt_cell_clicked以捕获被单击的行和列。然后,我打算将该值存储在另一列中,以有条件地突出显示该值(TRUE / FALSE)。

我的问题是:另一个选项/功能可以做得更好更快吗?

public static void Main(string[] args)
{
    using (var reader = new StreamReader("path\\to\\file.csv"))
    using (CsvReader csv = new CsvReader(reader))
    {
        csv.Read();
        csv.ReadHeader();

        if (!csv.Context.HeaderRecord.Contains("myHeaderColumnName"))
        {
            csv.Configuration.HasHeaderRecord = false;
            reader.BaseStream.Position = 0;
        }

        var records = csv.GetRecords<MyModel>().ToList();                        
    }
}

预期(尚未实现):单击单元格突出显示/取消突出显示。

此代码来自: How to change the cell color of a cell of an R Shiny data table dependent on it's value? DataTables DT: reset value of clicked cell

1 个答案:

答案 0 :(得分:0)

您可以仅使用单个单元格selection进行突出显示:

library(shiny)
library(DT)

options(DT.options = list(pageLength = 5))

DF = as.data.frame(
  cbind(
    matrix(round(rnorm(50), 3), 10),
    sample(0:1, 10, TRUE),
    rep(FALSE, 10)
  )
)

ui <- shinyUI(
  fluidRow(
    tags$style(HTML('table.dataTable tr.selected td, table.dataTable td.selected {background-color: lightgreen !important;}')),
    DT::dataTableOutput("myDT")
  )
)

server <- shinyServer(function(input, output, session) {

  output$myDT <- DT::renderDataTable({
    DT::datatable(DF, selection = list(mode="single", target="cell"), editable = TRUE) %>% formatStyle(
      'V1', 'V6',
      backgroundColor = styleEqual(c(0, 1), c('gray', 'yellow'))
    )
  })

})

shinyApp(ui, server)