微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

等待“确认模式”的输出来计算 RShiny 应用程序中的反应值

如何解决等待“确认模式”的输出来计算 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() 的计算根本不以用户在模态框中的响应为条件,而是以变量的过去状态为条件。 我指定我在这里使用了 ShinyWidgets 包的 ask_confirmation 函数作为其显式特征,但我也尝试了基本 shiny packageshinyalert函数。我觉得我应该通过在响应变量之外创建 observeobserveEvent 块来解耦,但我还没有设法做到这一点。有人能指出我正确的方向吗?

非常感谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。