shinyIncubatorパッケージで計算中にメッセージ表示
shinyIncubatorパッケージはShinyで処理中にメッセージを表示することができる。Shinyで処理に時間がかかる場合って不安になるからね。
これはShiny - GalleryのShiny - Progress exampleで紹介されている。shinyIncubatorパッケージは正式にサポートされてないとのこと。rstudio/shiny-incubator · GitHub
shinyIncubatorパッケージはCRANにない。GitHubからインストールする。
devtools::install_github("shiny-incubator", "rstudio")
プロキシ環境の場合には、前回投稿したこちらの記事のinstall_githubの場合を参考にする。
準備したコードはShiny - Progress exampleのメッセージを日本語に書き換えたもの。
ui.R
library(shinyIncubator) shinyUI(fluidPage( progressInit(), h1("Progress demo"), sidebarLayout( sidebarPanel( actionButton("go", "Run") ), mainPanel( plotOutput("plot") ) ) ))
server.R
library(shinyIncubator) shinyServer(function(input, output, session) { output$plot <- renderPlot({ if (input$go == 0) return() # Wrap the entire expensive operation with withProgress withProgress(session, { setProgress(message = "計算中。。。ちょっと待ってね", detail = "計算処理に少し時間がかかります。") Sys.sleep(2) # 2秒待つ setProgress(detail = "メッセージ1") Sys.sleep(2) # 2秒待つ anotherExpensiveOperation() Sys.sleep(2) # 2秒待つ setProgress(detail = "メッセージ2") Sys.sleep(2) # 2秒待つ plot(rnorm(100), rnorm(100)) }) }) anotherExpensiveOperation <- function() { withProgress(session, min = 0, max = 10, { setProgress(message = "計算中の詳細") for (i in 1:10) { setProgress(value = i) if (i == 7) setProgress(detail = "すみません。ちょっと時間がかかっています。") Sys.sleep(0.3) } }) } })