MulaiMulai sekarang secara gratis

Tunda reaksi dengan eventReactive()

Kerangka pemrograman reaktif Shiny dirancang sehingga setiap perubahan pada input secara otomatis memperbarui output yang bergantung padanya. Dalam beberapa situasi, kita mungkin ingin mengendalikan secara eksplisit pemicu yang menyebabkan pembaruan.

Fungsi eventReactive() digunakan untuk menghitung nilai reaktif yang hanya diperbarui sebagai respons terhadap suatu peristiwa tertentu.

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

Latihan ini adalah bagian dari kursus

Membangun Aplikasi Web dengan Shiny di R

Lihat Kursus

Petunjuk latihan

  • Gunakan eventReactive() untuk menunda eksekusi perhitungan BMI sampai pengguna mengeklik tombol.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

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)
Edit dan Jalankan Kode