2016-10-11 6 views
0

Shiny datatables를 사용하면 해당 테이블 셀을 클릭하여 테이블 열을 선택한 다음 선택한 열이 강조 표시됩니다. 그러나 너무 많은 열이있는 경우 버튼을 클릭하여 모든 열을 선택하고 강조 표시 할 수있는 방법이 있습니까? 이 방법으로, 해당 셀을 클릭하여 일부 열의 선택을 취소 할 수 있습니다.Shiny datatables가있는 모든 열 선택


P. 내 현재 솔루션 : 사용자가 열을 선택 취소 할 수 있음을 나타내는 확인란을 만들었습니다. 이 확인란을 선택하면 강조 표시된 열이 포함되지 않고 선택한 집합에서 제외됩니다.

답변

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 
      }) 

    }) 
+0

감사합니다. 나는 이것이 효과가있을 것이라고 생각한다. 그러나 선택한 열을 강조 표시하고 싶습니다. Javascript에서 약간의 추가 작업이 필요할 수 있습니다. 그런 식으로 선택한 열을 클릭하여 선택을 취소 할 수 있습니다. – athlonshi

+0

버튼을 클릭하면 모든 열이 선택되고 회색으로 표시됩니다. 모든 열을 선택하면 하나의 열을 클릭하면 열이 선택 취소되고 흰색이됩니다. 다른 행동을 원했어? –

+0

좋아요, 이제 알았습니다. 네, 이것이 제가 원하는 것입니다. 다시 한번 감사드립니다. – athlonshi