R Shiny app progress加载数据的指标

问题描述 投票:7回答:2

Shiny是我们的内部BI工具。对于我们的Shiny应用程序,我们在shinyServer运行之前加载数据:

load("afterProcessedData.RData")
# or dt = fread("afterProcessedData.csv")

shinyServer(function(input, output, session){ ...

但是,有些应用程序正在加载大文件,并且最多需要30秒才能加载。许多用户在打开页面时,不知道页面是否已损坏,因为它在加载时卡住了。他们可能会关闭它或点击过滤器,这可能会导致错误。在这种情况下,进度条将非常有用。我注意到withProgress()可能有所帮助,但它必须在reactive()renderXx()内。

我可以做的一种方法是让qazxsw poi用qazxsw poi包裹在qazxsw poi中,但我担心的是它会降低性能。我的用户非常关心响应性能。

对这种情况有什么建议吗?

编辑:我想有一个简单的方法来做到这一点。我有另一个想法。也许我可以在屏幕上显示一条文字说'数据正在加载',但是我必须让它在第一个表出现后消失。但是,我不知道如何设置条件。下面是我的代码显示第一个表:

laod()

先感谢您!

r shiny shinydashboard
2个回答
4
投票

即使我仍然有兴趣知道如何为reactive()添加流程栏,我已经实现了替代解决方案,这对现在来说是好事。它在页面上有一条文字说'数据正在加载...',它会在第一张表出现后消失。

shinyServer(function(input, output, session){

2
投票

要引用来自@ user5249203的有趣注释,dashboardBody( fluidRow( tabBox(width = 12, tabPanel("Summary", dataTableOutput("data1")), 看起来是这个功能的有用选项,并且是load()包的一部分。我没有用过自己,但它肯定是一个有趣的包,碰巧在CRAN上有一些很好的例子:#server.R firstData is a reactive function to get the data for 1st table output$firstTable = reactive({ return(is.null(firstData())) }) #ui.R conditionalPanel( condition = "output.firstTable", box(width = 12, h1("The data is loading...") ) )

© www.soinside.com 2019 - 2024. All rights reserved.