【发布时间】:2018-04-09 07:31:53
【问题描述】:
我有一个包含自定义函数的库,我需要在闪亮的应用程序中使用它。该函数内部有一个 for 循环,我想使用该循环中的变量来更新进度条(而不是将函数复制到服务器文件,因为我想保持一切独立和干净)。到目前为止,我已经设法在函数使用“withProgress()”运行时弹出一条消息,但我想让它更好地显示已完成工作的百分比,所以最终用户不要不要向运行按钮发送垃圾邮件。 这是一个可重现的问题示例:
library(shiny)
# Library in separate file
snail_function <- function(){
for (i in 1:100){
Sys.sleep(1)
}
}
# ui.R
ui <- shinyUI(fluidPage(
tabsetPanel(
tabPanel("1. Load Files"
, fluidRow(actionButton("analysis", "Run analysis"))
, fluidRow(
plotOutput("bar")
)
)
)
))
# server.R
server <- shinyServer(function(input, output, session) {
observeEvent(input$analysis, {
output$bar <- renderPlot({
withProgress(message = 'Running... (this may take a while)',
detail = 'Go get some coffee...', value = 0, {
snail_function()
})
# do stuff
})
})
})
shinyApp(ui = ui, server = server)
所以,我想问题是:有什么方法可以使用 snail_function 循环中的 i 来设置栏中的进度? (使用全局变量或类似的东西)
谢谢!
【问题讨论】:
标签: r shiny progress-bar