r - 等待“确认模式”的输出以计算 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 package
或shinyalert
. 我觉得我可能应该通过在我的反应变量之外创建observe
或observeEvent
阻止来解耦,但我还没有设法做到这一点。有人能指出我正确的方向吗?
非常感谢!
解决方案
推荐阅读
- kql - 如何在操作员日期时间变量之间调用
- verilog - “分配”操作中的操作优先级?
- bash - 在 RedHat 上的 bash 脚本中设置新用户的密码
- xslt - XSLT 将每第 n 个项目分组到新组中
- javascript - 在 Bootstrap v3.4 的页面加载时触发模式
- python - UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf1 in position 5: invalid continuation byte (On Python 3)
- visual-studio-code - 在 VSCode 中的同一编辑器组中导航回来
- python - 是否可以使用 ```OrderedDict``` 在 tensorflow 中使用 tf.saved_model API 生成模型?
- python - 尝试使用 Pandas 重新采样具有新频率的时间序列
- eclipse - 未连接到调试器时 MCU 复位