选择带有Shiny数据表的所有列

时间:2016-10-11 13:24:17

标签: r shiny dt

使用Shiny数据表,可以通过单击相应的表格单元格来选择表格列,然后突出显示所选列。但是如果有太多列,有没有办法只需单击一个按钮来选择所有列并突出显示它们?通过这种方式,可以通过单击相应的单元格来取消选择某些列。

P.S。我当前的解决方案:我创建了一个复选框,指示用户可以反转选择列。选中该复选框后,突出显示的列将从所选集中排除,而不是包含在内。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,这可能是一种方法。

ui.R

    library(shiny)
    library(DT)


    shinyUI(fluidPage(


      titlePanel("Column Selection"),
      fluidRow(
              actionButton("selectCols", "Select all columns"), 
              DT::dataTableOutput('tbl'),
              verbatimTextOutput("selectedColums")
        )

    ))

server.R

    library(shiny)
    library(DT)

    shinyServer(function(input, output) {


            irisTable <- reactive({
                    if (input$selectCols > 0) {
                            datatable(iris, selection = list(target = 'column', selected = c(0,1,2,3,4,5)))   
                    } else {
                            datatable(iris, selection = list(target = 'column'))  
                    }
            })

            output$tbl = DT::renderDataTable(
                    irisTable())
            output$selectedColums <- renderPrint({
                    input$tbl_columns_selected
            })

    })