R glänzend: Aktualisiere ausgewählte Eingabewerte in data.table

Ich habe renderDataTable mit ausgewählten Eingängen und Schaltflächen im Inneren. Ich möchte selectInput inside datatable aktualisieren, nachdem ich in der entsprechenden Zeile auf die Schaltfläche "Speichern" geklickt habe. Wie kann ich das machen? Bei der Suche nach einer Lösung stellte ich fest, dass "wenn Sie die Tabelle erneut rendern, die Eingaben nur funktionieren, wenn Sie zusätzlichen Code zum Aufheben der Bindung hinzufügen". Allerdings bin ich neu in glänzenden und mit js-Optionen, so wäre ich für alle Hinweise / Lösungen dankbar.

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 <- renderTable({
      data.frame(selected=shinyValue("selecter_",nrow(mtcars)))
    })
    }
))

Antworten auf die Frage(2)

Ihre Antwort auf die Frage