我还没有找到关于在Shiny中使用ProgressBar加载来自数据库的数据的解决方案。我的Shiny应用程序连接到数据库,用户直接从那里获取数据(因为我的SQL查询是反应性的,数据量会有所变化)。有时数据很大,加载需要一些时间。用户不知道是否正在进行某些操作或应用程序已经“卡住”了。我在我的应用程序中实现了最简单的进程指示器(在
用户仍然感到有些困惑。
我希望能够像这样使用
output$tabelle <- DT :: renderDataTable({
...)中),但似乎不够用:progress <- shiny::Progress$new()
on.exit(progress$close())
progress$set(message = "Processing", value = 0)
用户仍然感到有些困惑。
我希望能够像这样使用
?tcltk::tkProgressBar
实现类似于这种状态消息的显示(在 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)
}
)
output$tabelle <- DT::renderDataTable({ withProgress(message = 'Processing...', value = 0, { for (i in 1:10) { incProgress(1/30) Sys.sleep(0.25) } datatable(...}
然而,这并没有提供百分比,并且也不太对应我们需要设置incProgress
以加载数据的过程。 - Mal_aactionButton("button1", "Auswaehlen")
。 - Mal_a