[英]How to show progress bar for computation in eventReactive()?
如果评估eventReactive()
中的某些内容,我想显示一个进度条。 但是,如果没有直接向 output 添加任何内容, withProgress()
似乎无法按预期工作。 (请参阅下面由input$go1
触发的第一部分。)
在具有多个面板的仪表板中,如果一个人导航到另一个子页面,它就会显示出来。 但是,我希望在按下按钮后立即显示它。
任何人都可以在下面的示例中帮助解决这个问题吗?
library(shiny)
ui <- fluidPage(
actionButton("go1", "Go! Number 1"),
actionButton("go2", "Go! Number 2"),
plotOutput("plot")
)
server <- function(input, output) {
eventReactive(input$go1,{
withProgress({
for (i in 1:15) {
incProgress(1/15)
Sys.sleep(0.25)
}
}, message = "Doesn't show up!")
})
output$plot <- renderPlot({
input$go2
withProgress({
for (i in 1:15) {
incProgress(1/15)
Sys.sleep(0.1)
}
}, message = "Shows up!")
plot(cars)
})
}
shinyApp(ui = ui, server = server)
eventReactive
在事件表达式被触发时不会被执行,它只会被标记为无效。 您必须请求它们的反应值才能执行它们 - 请检查以下内容:
library(shiny)
ui <- fluidPage(
actionButton("go1", "Go! Number 1"),
actionButton("go2", "Go! Number 2"),
plotOutput("plot")
)
server <- function(input, output) {
myData <- eventReactive(input$go1, {
withProgress({
for (i in 1:15) {
incProgress(1/15)
Sys.sleep(0.25)
}
}, message = "Doesn't show up!")
cars
})
output$plot <- renderPlot({
input$go2
req(myData())
withProgress({
for (i in 1:15) {
incProgress(1/15)
Sys.sleep(0.1)
}
}, message = "Shows up!")
plot(myData())
})
}
shinyApp(ui = ui, server = server)
对于您的示例场景, observeEvent
是更好的选择。 请看这个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.