title: R shiny: update select input values in data.table
body: <p>I have renderDataTable with select Inputs and buttons inside. I want to update selectInput inside datatable after click on 'Save' button in appropriate row. How can I do that? During searching for a solution I found that "if you rerender the table, the inputs won't work unless you add some extra code to unbind". However I am new in shiny and using js options, so I would be grateful for any hints/solutions.</p>
  
  <pre><code>library(shiny)
  library(DT) 
  runApp(list(
    ui = basicPage(
      h2('The mtcars data'),
      DT::dataTableOutput('mytable'),
      h2("Selected"),
      tableOutput("checked")
    ),
  
    server = function(input, output) {
      # helper function for making checkbox
      shinyInput = function(FUN, len, id, ...) { 
        inputs = character(len) 
        for (i in seq_len(len)) { 
          inputs[i] = as.character(FUN(paste0(id, i), ...)) 
        } 
        inputs 
      } 
      # datatable with checkbox
      output$mytable = DT::renderDataTable({
        data.frame(mtcars,Rating=shinyInput(selectInput,nrow(mtcars),"selecter_",label=NULL,
                                            choices=1:5, width="60px"),
                   Save = shinyInput(actionButton, nrow(mtcars),'button_', 
                                           label = 'Save',onclick = 'Shiny.onInputChange(\"select_button\",  this.id)' ))
      }, selection='none',server = FALSE, escape = FALSE, options = list( 
        paging=TRUE,
        preDrawCallback = JS('function() { 
                             Shiny.unbindAll(this.api().table().node()); }'), 
        drawCallback = JS('function() { 
                          Shiny.bindAll(this.api().table().node()); } ') 
        ) )
      # helper function for reading checkbox
      shinyValue = function(id, len) { 
        unlist(lapply(seq_len(len), function(i) { 
          value = input[[paste0(id, i)]] 
          if (is.null(value)) NA else value 
        })) 
      } 
      # output read checkboxes
      output$checked &lt;- renderTable({
        data.frame(selected=shinyValue("selecter_",nrow(mtcars)))
      })
      }
  ))
  </code></pre>