簡體   English   中英

R Shiny app progress加載數據的指標

[英]R Shiny app progress Indicator for loading data

Shiny是我們的內部BI工具。 對於我們的Shiny應用程序,我們在shinyServer運行之前加載數據:

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

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

但是,有些應用程序正在加載大文件,並且最多需要30秒才能加載。 許多用戶在打開頁面時,不知道頁面是否已損壞,因為它在加載時卡住了。 他們可能會關閉它或點擊過濾器,這可能會導致錯誤。 在這種情況下,進度條將非常有用。 我注意到withProgress()可能會有所幫助,但它必須在reactive()renderXx()

我可以做的一種方式是有laod()與warpped reactive()里面shinyServer(function(input, output, session){但我關心的是它會慢的性能。而我的用戶非常關心的響應性能。

對這種情況有什么建議嗎?

編輯:我想有一個簡單的方法來做到這一點。 我有另一個想法。 也許我可以在屏幕上顯示一條文字說'數據正在加載',但是我必須讓它在第一個表出現后消失。 但是,我不知道如何設置條件。 下面是我的代碼顯示第一個表:

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()看起來是此功能的有用選項,並且是shinycssloaders包的一部分。 我沒有使用過自己,但它肯定是一個有趣的包,碰巧在CRAN上有一些很好的例子: https//andrewsali.shinyapps.io/example/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM