[問題] Shiny可以在運算未完成時於UI提示嗎?

作者: clsmbstu   2017-08-21 22:43:00
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
使用者(已經有用R 做過不少作品)
[問題敘述]:
我最近做了一隻Shiny程式,但它需要的運算耗時比較久,
(而且在shinyapps.io上花的時間比我在本地長很多...)
好奇有沒有可能在UI裡面加一行提示(例如「運算中,請稍候」之類的),
而且只在結果還沒出來時才有那一行?
我知道也許長期目標是讓我的程式碼更有效率一點,
但目前我還想不到改寫的方式。 orz
[程式範例]:
ui <- fluidPage(
# Other UI elements
conditionalPanel(condition = "output.done == 'FALSE'",
helpText("運算中,請稍候"))
)
server <- function(input, output) {
output$done <- reactive({"FALSE"})
# Complicated processes
output$done <- reactive({"TRUE"})
outputOptions(output, "done", suspendWhenHidden = FALSE)
}
[關鍵字]:
shiny, dynamic UI
作者: celestialgod (天)   2017-08-22 00:28:00
關鍵字 showModal shiny或是勇shinyBS,不過個人不推shinyBS::bsModal 一年前用有一些問題,不確定現在有沒有改善,但是多數功能 shiny showModal就可以解決
作者: clsmbstu   2017-08-22 01:51:00
感謝!再找時間來玩玩看~
作者: cywhale (cywhale)   2017-08-22 09:15:00
withProgress in shiny https://goo.gl/fA23za
作者: clsmbstu   2017-08-22 10:37:00
這個也好棒!大感謝!細讀之後發現我的狀況withProgress提供的幫助有限因為我最花時間的地方是leaflet::addPolygons而非迴圈我試過把地圖繪製的pipeline切開來並在中間放incProgess但詭異的是進度條跑滿了,圖還是要再等一陣子才會出來
作者: cywhale (cywhale)   2017-08-23 01:05:00
不是可以 withProgress(message=... {..(Your processes)..leaflet %<>% addPolygons() })
作者: clsmbstu   2017-08-23 22:30:00
感謝!我也有查到leafletProxy,但我是主觀猜測應該幫助不大,畢竟我每次更換輸入就是要重畫超過350個polygons而前面只是做到addTiles而已 QQ
作者: locka (locka)   2017-08-23 23:14:00
請問clsmbstu大大是在一個addPolygons()裡超過350個多邊形(例如全台鄉鎮)還是addPolygons()執行350次啊??
作者: clsmbstu   2017-08-23 23:40:00
是前者喔 我就是在畫全臺鄉鎮 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com