2014-07-10 4 views

risposta

1

Ho avuto un problema simile, anche se i pulsanti non sono generati dinamicamente nel mio caso. Non è chiaro dalla domanda se l'accento è posto sull'aspetto "generato dinamicamente". Se è così la mia risposta non ti aiuta molto ...

Per semplificare la mia risposta ho ridurre il problema al seguente:

  • Ho due actionButtons nel mio UI (id="increase" e id="decrease") e ho un variabile intera (var) e testo (id="actual_value") per mostrare il valore effettivo. Uno dei pulsanti dovrebbe aumentare il valore di uno l'altro dovrebbe diminuirlo e ovviamente l'output dovrebbe mostrare il valore aggiornato.

La soluzione è:

shinyServer(function(input, output, session) { 
     increase <- reactive({ 
      if(input$increase == 0) return() 
      var <- var + 1 
      }) 

      decrease <- reactive({ 
      if(input$decrease == 0) return() 
      var <- var - 1 
      }) 

      actual.value <- reactive({ 
      increase() 
      decrease() 
      var 
      }) 

      output$actual_value <- renderText({ 
      paste("Actual value is: ", actual.value()) 
      }) 
    }) 

Quindi la spiegazione è che ci sono due ingressi reattivi (cioè, i pulsanti), e due corrispondenti espressioni reattivi (increase e decrease). Una terza espressione reattiva (actual.value) dipende dai primi due e restituisce il valore effettivo di var. L'uscita reattiva dipende da questo.

in modo da creare due espressioni reattive separate per i due pulsanti (increase e decrease) e poi multiplex loro nel terzo (actual.value).

Questo funziona, tuttavia non so se questo è l'approccio migliore per risolvere un problema del genere.