首页 > 解决方案 > 等待“确认模式”的输出以计算 RShiny 应用程序中的反应值

问题描述

我想构建一个这种类型的 RShiny 应用程序:

这是一个应用程序的示意性示例。

library(shiny)
library(shinyWidgets)


ui <- fluidPage(
  tags$h1("Ask the user for confirmation"),
  numericInput(
    inputId = "number", label = "Enter your number", value = 5,
    min = 1, max = 10, step = 1
  ),
  actionButton(
    inputId = "start",
    label = "Start"
  ),
  verbatimTextOutput(outputId = "res")
)

server <- function(input, output, session) {
  
  random <- eventReactive(input$start, {
    
    if (input$number > 6){
      ask_confirmation(
        inputId = "myconfirmation",
        title = "Want to confirm ?",
        text = "It will take a long time..."
      )
      req(input$myconfirmation)
    } 
    rnorm(input$number)
    
  })
  
  output$res <- renderPrint(random())
}

shinyApp(ui = ui, server = server)
  

然而,在这个例子中,我的反应变量的计算random()根本不取决于用户在模态框中的响应,而是取决于变量的过去状态。我指定我在ask_confirmation这里使用了 shinyWidgets 包的功能,因为它具有明确的特征,但我也尝试了 basicshiny packageshinyalert. 我觉得我可能应该通过在我的反应变量之外创建observeobserveEvent阻止来解耦,但我还没有设法做到这一点。有人能指出我正确的方向吗?

非常感谢!

标签: rshinymodal-dialogreactive

解决方案


推荐阅读