LoslegenKostenlos loslegen

Reaktionen mit eventReactive() verzögern

Shinys Reaktivitäts-Framework ist so aufgebaut, dass jede Änderung an Inputs automatisch die davon abhängigen Outputs aktualisiert. In manchen Situationen möchten wir jedoch den Auslöser für diese Aktualisierung explizit steuern.

Die Funktion eventReactive() wird verwendet, um einen reaktiven Wert zu berechnen, der nur als Reaktion auf ein bestimmtes Ereignis aktualisiert wird.

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

Diese Übung ist Teil des Kurses

Webanwendungen mit Shiny in R entwickeln

Kurs anzeigen

Anleitung zur Übung

  • Verwende eventReactive(), um die Berechnung des BMI zu verzögern, bis die Nutzerin oder der Nutzer auf den Button klickt.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

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)
Code bearbeiten und ausführen