光沢のあるUIの中にプログレスバーを表示する方法を知りたいと思います。 コードをご覧ください。あなたは何か考えていますか?光沢のあるプログレスバーとプログレスバーを同期させる方法
library(shiny)
library(plyr)
function_I_cant_edit <- function(){plyr::llply(LETTERS ,.fun=function(x){Sys.sleep(0.2)},.progress = "text")}
server<-shinyServer(function(input, output,session) {
observeEvent(input$go, {
progress <- shiny::Progress$new(session, min=1, max=15)
on.exit(progress$close())
progress$set(message = 'Calculation in progress')
function_I_cant_edit()
for (i in 1:15) {
progress$set(value = i)
Sys.sleep(0.1)
}
})
output$plot <- renderPlot({
plot(cars)
})
})
ui <- basicPage(
actionButton("go","PUSH ME"),
plotOutput("plot")
)
shinyApp(ui = ui, server = server)
考え方はllplyの中でprogress = "tk"を使用することですが、セクシーな方法がありますか?
別のアイデアは、光沢のあるアプリでコンソールの出力を表示することです...しかし、私はこれを管理しませんでした。
よろしく
EDIT:
llpy機能使用progress_tk()またはprogress_text()またはprogress_time()
だから私は
progress_shiny <-function (title = "plyr progress", label = "Working...", ...)
{
n <- 0
tk <- NULL
list(init = function(x) {
tk <<- shiny::Progress$new(session,min=1, max=15)
tk$set(message = 'Calculation in progress')
}, step = function() {
n <<- n + 1
tk$set(value = n)
}, term = function() print("fin"))
}
progress_shiny()関数を作成し、私は試しました:
server<-shinyServer(function(input, output,session) {
# session <<- session
observeEvent(input$go, {
# function_I_cant_edit()
llply(LETTERS ,.fun=function(x){Sys.sleep(0.2)},.progress = "shiny")
})
output$plot <- renderPlot({
plot(cars)
})
})
ui <- basicPage(
actionButton("go","PUSH ME"),
plotOutput("plot")
)
shinyApp(ui = ui, server = server)
しかし、エラーメッセージが「public_bind_envの$の初期化(...)でエラーが発生しました:オブジェ "であるセッションのintrouvable」...
私は何かを見つける方法のイム考える;)
'plyr'からプログレスバーが' capture.output'で捕捉することができるコンソールに印刷されたテキストだけであるに貢献このように、しかし私は 'plyr'から 'Shiny UI'にプログレスバーを得ることはできないだろうと思っています。 – Carl
Thks、私はそれを知っていますが、capture.outputはリアルタイムではありません。 –