R Shiny -observeEvent-使命令按顺序实时执行

标签 r shiny

我的 Shiny 应用程序必须执行一些稍慢的服务器端计算,因此我希望用户能够跟踪等待时发生的情况。这是我的应用程序结构的一个最小示例:

https://gist.github.com/0bb9efb98b0a5e431a8f

runGist("0bb9efb98b0a5e431a8f")

我希望发生的是:

  1. 点击“提交”
  2. 应用移至“输出”选项卡面板
  3. 它按照 observeEvent 中列出的顺序显示消息和输出

实际发生的情况是:

  1. 点击“提交”
  2. 一切都在服务器端立即执行
  3. UI 最后更新

在这里可以得到我想要的东西吗?

最佳答案

我无法使用您的方法提出解决方案。 Shiny 似乎会等到 server = function(input, output) 中的所有内容都被计算出来,并在之后显示结果,此时 output$.. . 可用。不知道有没有办法解决这个问题。

但是,已经实现了一个解决方案,您可以尝试:Progress indicators

使用您的代码实现:

library(shiny)

shinyApp(
  ui = navbarPage(title="test", id="mainNavbarPage",

                  tabPanel("Input", value="tabinput",
                           numericInput('n', 'Number of obs', 100),
                           actionButton(inputId="submit_button", label="Submit")
                  ),

                  tabPanel("Output", value="taboutput",
                           plotOutput('plot')
                  )
  ),
  server = function(input, output, session) {


    observeEvent(input$submit_button, {
      # Move to results page
      updateNavbarPage(session, "mainNavbarPage", selected="taboutput")

      withProgress(message = "Computing results", detail = "fetching data", value = 0, {

        Sys.sleep(3)

        incProgress(0.25, detail = "computing results")

        # Perform lots of calculations that may take some time
        Sys.sleep(4)

        incProgress(0.25, detail = "part two")

        Sys.sleep(2)
        incProgress(0.25, detail = "generating plot")

        Sys.sleep(2)
      })

      output$plot <- renderPlot({hist(runif(input$n)) })

    })
})

关于R Shiny -observeEvent-使命令按顺序实时执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32806113/

相关文章:

r - 使用 r 按属性从 xml 获取值

r - 将 R 输出导出到 TXT 文件时如何修复损坏的格式?

r - 修改 SIR 模型以包含随机性

r - for-while ifelse 循环? (R 编程)

r - 如何根据文件的编号移动某些文件?

r - 如何在 Shiny 中包含带有反应式 MathJax 元素的 html 代码?

javascript - 如何通过单击 highcharts Shiny 的 R 条形图来对表进行子集化?

R Shiny 设置复选框控制值到数据框特定列中的值

r - 使用shinyFiles进行文件夹选择在更新后停止工作

r - 如何在Shiny中使用书签将编辑的内容记录在DT表中?