R用于加载数据的应用程序进度指示器

R用于加载数据的应用程序进度指示器,r,shiny,shinydashboard,R,Shiny,Shinydashboard,Shining是我们的内部BI工具。对于我们闪亮的应用程序,我们在shinyServer运行之前加载数据: load("afterProcessedData.RData") # or dt = fread("afterProcessedData.csv") shinyServer(function(input, output, session){ ... 然而,一些应用程序正在加载大文件,加载时间长达30秒。许多用户在打开页面时,不知道页面是否已损坏,因为页面在加载时被卡住了。他们可能会关闭

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

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

shinyServer(function(input, output, session){ ...
然而,一些应用程序正在加载大文件,加载时间长达30秒。许多用户在打开页面时,不知道页面是否已损坏,因为页面在加载时被卡住了。他们可能会关闭它或单击过滤器,这可能会导致错误。在这种情况下,进度条将非常有用。我注意到
withProgress()
可能会有帮助,但它必须位于
reactive()
renderXx()

我可以做的一个方法是在
shinyServer(函数(输入、输出、会话){
中使用
laod()
扭曲
reactive()
,但我担心这会降低性能。我的用户非常关心响应性能

对这种情况有什么建议吗

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

dashboardBody(
fluidRow( 
  tabBox(width = 12,
         tabPanel("Summary",
                  dataTableOutput("data1")),

提前谢谢!

尽管我仍然有兴趣知道如何为
load()
添加进程栏,但我已经实现了另一种解决方案,目前还不错。它在页面上有一个文本说明“数据正在加载…”,在第一个表出现后,它将消失

#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...")
        )
  )

参考@user5249203有趣的注释,
withSpinner()
看起来是此功能的一个有用选项,并且是包的一部分。我没有使用过自己,但它确实是一个有趣的包,正好在CRAN上,并且有一些很好的示例:

好奇,为什么
withProgress()
reactive()
render()
a problem?中。尽管我对它显示的状态栏不满意,但当我在所有
render()中用progress
包装
时,它对我来说工作正常
函数。此外,如何用这些示例包装您的数据加载函数,然后
在闪亮的
withProgress()
?这对我很有用。
输出$Ref\u output@user5249203谢谢您的回答。我关心的是
加载()
被动()
是因为它会降低性能,因为每次更改都会调用
load()
3倍长,这将被客户端归咎于此。如果此加载在全局变量中,那么为什么每次会话都要加载
withProgress()
当人们使用
shinyjs
软件包等待时,也可以删除按钮,这样在新特性完全加载之前,他们不会点击任何东西。您可以保存每个对象并分别读取它们,而不是加载完整的
.rdata
,这既高效又快速。检查
readRDS
。现在,有一种简单的方法来实现旋转在Rshiny.
DT::dataTableOutput(outputId='table')%%>%withSpinner()中也是如此。