Update Handsontable durch Editieren von Tabelle und / oder eventReactive

Ich benutze dasrhandsontable -Paket in einer Shiny-App, die die folgenden Funktionen haben sollte:

ie in der Berechnung verwendeten Daten können zufällig generiert werden und werden von einem @ aufgerufeactionButton (und wenn die App startet)die Daten können vom Benutzer manuell über das Handsontable-Objekt bearbeitet werdennach der manuellen Bearbeitung sollte es möglich sein, zufällige Daten neu zu generieren und eine neue Berechnung aufzurufen

Die folgende App macht genau das, was ich will, aber ich konnte nicht herausfinden, wie ich die globale Variable loswerden kanndid_recalc. Dies ist ein minimales Beispiel, bei dem die Daten aus zwei numerischen Werten bestehen, die summiert werden.

library(shiny)
library(rhandsontable)

did_recalc <- FALSE

ui <- fluidPage(
  rHandsontableOutput('table'),
  textOutput('result'),
  actionButton("recalc", "generate new random vals and calculate")
)

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

  dataset_generator <- eventReactive(input$recalc, {
    df <- as.data.frame(runif(2))
    output$table <- renderRHandsontable({rhandsontable(df)})
    did_recalc <<- TRUE
    df
  }, ignoreNULL = FALSE)

  output$result <- renderText({ 
    df <- dataset_generator()
    if (!is.null(input$table) && !did_recalc) 
      df <- hot_to_r(input$table)
    did_recalc <<- FALSE
    sum(df)
  })
}) 

shinyApp(ui = ui, server = server)

Wenn ich das @ entfer!did_recalc Bedingung innerhalb vonoutput$result <- ... dann ruft das Bearbeiten der Tabelle noch eine (korrekte) Berechnung auf. Wenn jedoch "Neu berechnen" gedrückt wird (nachdem einige manuelle Änderungen vorgenommen wurden), werden mit der Schaltfläche "Neu berechnen" nur neue Zufallswerte generiert, jedoch ohne die Summe neu zu berechnen.

Es scheint mir, dassinput$table kann nur durch manuelle Bearbeitung des Tabellenobjekts geändert werden und kümmert sich nicht um neue Werte, die über @ angegeben werdrenderRHandsontable. Daher brauche ich diesen Hack mit der globalen Variablen, mit der ich verfolgen kann, ob der Benutzer die Daten gerade neu generiert hat (was dazu führt, dassinput$table ist veraltet"

Hat jemand eine Idee, wie man die Funktionalität dieses Beispiels ohne die globale Variable erhält?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage