在服务器功能中使用R shiny中的progressbar非常简单:
library(shiny)
source(myFunctions.R)
shinyServer(function(input, output) {
withProgress(message = 'Chargement des données', value = 0, {
incProgress(0.5)
function1()
incProgress(0.6)
function2()
incProgress(0.7)
function3()
incProgress(0.8)
})
})
但是,如果我想将它们放在一个函数中,例如:
Allfunction <- function(){
withProgress(message = 'Chargement des données', value = 0, {
incProgress(0.5)
function1()
incProgress(0.6)
function2()
incProgress(0.7)
function3()
incProgress(0.8)
})
}
因此
shinyServer(function(input, output) {
Allfunction()
})
然后我得到
Warning: Error in withProgress: 'session' is not a ShinySession object.
并向该函数添加会话参数,正如谷歌论坛上所宣传的那样。
答案 0 :(得分:1)
在函数内使用withProgress()
应该不是问题。这是一个有效的例子。请注意incProgress
累积工作的方式,即如果您想从0.5
转到0.6
,则只需在函数中添加0.1
作为参数。
希望这有帮助!
library(shiny)
ui <- shinyUI(fluidPage(
actionButton('click','click me!')
))
Allfunction <- function(){
withProgress(message = 'Chargement des données', value = 0, {
incProgress(0.5)
function1()
incProgress(0.1)
function2()
incProgress(0.1)
function3()
incProgress(0.1)
})
}
function1 <- function(){Sys.sleep(1)}
function2 <- function1
function3 <- function1
server <- function(input, output, session) {
observeEvent(input$click, {
Allfunction()
})
}
shinyApp(ui, server)