【问题标题】:Shiny: ProgressBar for loading the data from database to datatable (DT)Shiny:ProgressBar,用于将数据从数据库加载到数据表(DT)
【发布时间】:2016-11-29 17:36:27
【问题描述】:

我还没有找到解决我关于 Shiny 中 ProgressBar 从数据库加载数据的问题的解决方案。我的 Shiny App 连接到数据库,用户直接从那里获取数据(因为我的 SQL 查询是反应式的,数据量会有所不同)。有时数据很大,加载需要一些时间。用户不知道是否正在发生某些事情或应用程序“卡住”了。我在我的应用程序(output$tabelle <- DT::renderDataTable({...)中实现了最简单的过程指示器,但似乎还不够:

progress <- shiny::Progress$new()

        on.exit(progress$close())

        progress$set(message = "Processing", value = 0)

用户仍然有点困惑。

我想用?tcltk::tkProgressBar 来做这样的事情(showing a status message in R):

pb <- tkProgressBar("test progress bar", "Some information in %",
        0, 100, 50)
Sys.sleep(0.5)
u <- c(0, sort(runif(20, 0 ,100)), 100)
for(i in u) {
    Sys.sleep(0.1)
    info <- sprintf("%d%% done", round(i))
    setTkProgressBar(pb, i, sprintf("test (%s)", info), info)
}
Sys.sleep(5)
close(pb)

以一定百分比评估从数据库加载数据的进度。

我不知道如何在我闪亮的应用程序中使用它。任何想法都会有所帮助。

提前致谢!

*一些简单的应用程序:

library("shiny")
library("DT")
shinyApp(
  ui = fluidPage(DT::dataTableOutput('tbl')),
  server = function(input, output) {
    output$tbl = DT::renderDataTable(
      iris)
  }
)

【问题讨论】:

  • 您是否已经找到解决方案或仍在寻找解决方案? :)
  • 嘿你 :) 这不是我想要的。我已经像这样使用了 smthg:output$tabelle &lt;- DT::renderDataTable({ withProgress(message = 'Processing...', value = 0, { for (i in 1:10) { incProgress(1/30) Sys.sleep(0.25) } datatable(... 但是这并没有提供百分比,也与加载数据的过程不太对应,因为我们需要设置 incProgress
  • 好的,有空我看看,因为这是一个很有趣的问题
  • 哈哈好吧,非常感谢!慢慢来
  • 您可能使用某个按钮加载数据,对吧?

标签: r shiny progress-bar dt


【解决方案1】:

可能最简单的方法是使用提供busyIndicator 的包shinysky。您不会看到进度条,但中间的加载动画也应该可以工作。您还可以通过将文本设置为显示、gif 和显示指示器的时间来自定义它。 (默认为一秒后)。


完整示例:

library("shiny")
library("DT")
library("shinysky")

shinyApp(
  ui = fluidPage(
    busyIndicator(),
    h3("Test"),
    hr(),
    DT::dataTableOutput('tbl')
  ),
  server = function(input, output) {
    output$tbl = DT::renderDataTable({
     data.frame(x = rnorm(7000000), y = runif(7000000))
    })
  }
)

【讨论】:

  • 当闪亮的忙碌超过一秒时它会一直打开(默认)
  • shinysky 不在 CRAN 上,而是在 github 上
  • 当时它还在 Cran 上可用。
猜你喜欢
  • 2019-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-26
相关资源
最近更新 更多