gpt4 book ai didi

r - Shiny:ProgressBar,用于将数据从数据库加载到数据表(DT)

转载 作者:行者123 更新时间:2023-12-05 00:49:40 27 4
gpt4 key购买 nike

我还没有找到解决我关于 Shiny 中 ProgressBar 从数据库加载数据的问题的解决方案。我的 Shiny App 连接到数据库,用户直接从那里获取数据(因为我的 SQL 查询是响应式(Reactive)的,数据量会有所不同)。有时数据很大,加载需要一些时间。用户不知道是否正在发生某些事情或应用程序“卡住”了。我在我的应用程序中(在 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) :

enter image description here

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)

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

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

提前致谢!

*一些简单的应用:

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

最佳答案

可能最简单的方法是使用提供 busyIndi​​cator 的包 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))
})
}
)

关于r - Shiny:ProgressBar,用于将数据从数据库加载到数据表(DT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38583643/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com