Inizia subitoInizia gratis

Ritardare le reazioni con eventReactive()

Il framework di programmazione reattiva di Shiny è progettato in modo che qualsiasi modifica agli input aggiorni automaticamente gli output che ne dipendono. In alcune situazioni, potremmo voler controllare in modo esplicito il trigger che causa l’aggiornamento.

La funzione eventReactive() viene usata per calcolare un valore reattivo che si aggiorna solo in risposta a un evento specifico.

rval_x <- eventReactive(input$event, {
 # calcoli
})

Questo esercizio fa parte del corso

Creare applicazioni web con Shiny in R

Visualizza corso

Istruzioni dell'esercizio

  • Usa eventReactive() per ritardare l’esecuzione del calcolo del BMI finché l’utente non fa clic sul pulsante.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

ui <- fluidPage(
  titlePanel('BMI Calculator'),
  sidebarLayout(
    sidebarPanel(
      textInput('name', 'Enter your name'),
      numericInput('height', 'Enter height (in m)', 1.5, 1, 2, step = 0.1),
      numericInput('weight', 'Enter weight (in Kg)', 60, 45, 120),
      actionButton("show_bmi", "Show BMI")
    ),
    mainPanel(
      textOutput("bmi")
    )
  )
)

server <- function(input, output, session) {
  # MODIFY CODE BELOW: Use eventReactive to delay the execution of the
  # calculation until the user clicks on the show_bmi button (Show BMI)
  rval_bmi <- reactive({
    input$weight/(input$height^2)
  })
  output$bmi <- renderText({
    bmi <- rval_bmi()
    paste("Hi", input$name, ". Your BMI is", round(bmi, 1))
  })
}

shinyApp(ui = ui, server = server)
Modifica ed esegui il codice