Shiny05---withProgress显示进度条

翻译的一塌糊涂,专业词汇实在是看不懂,目前也就只能凑活把功能实现咯

REF

https://shiny.rstudio.com/reference/shiny/latest/withProgress.html

参数设置

函数选项
withProgress(expr, min = 0, max = 1, value = min + (max - min) * 0.1, 
message = NULL, detail = NULL, style = getShinyOption("progress.style", 
default = "notification"), session = getDefaultReactiveDomain(),
 env = parent.frame(), quoted = FALSE) 

setProgress(value = NULL, message = NULL, detail = NULL, session = getDefaultReactiveDomain()) 


incProgress(amount = 0.1, message = NULL, detail = NULL, session = getDefaultReactiveDomain())
参数设置
参数说明
expr需要执行的代码,包含对setprogress的调用
min进度条的初始值,必须小于max,默认为0
max进度条的最大值,大于min,默认为1
value单一数值向量,具体含义没看懂
message字符串,展示给用户的信息,如果是NULL,隐藏当前信息
detail字符串,展示在message旁
style进度条样式,默认notification右下角展示,style = ‘old’ 网页前端展示
sessionshiny会话变量,用以提供shinyserver的功能,默认自动寻找会话
env【没看懂。。。expr所应用的环境???】
quotedexpr是否引用表达式
amountincProgress 参数,进度条的增加量,默认0.1

描述

在长时间运行操作时,向用户报告进度信息。

细节

shiny中显示进度信息的有两个不同的API。函数withProgressincProgresssetProgress 提供简单的接口功能,而Progress 提供一个面向对象的API。
withProgress 将会产生一个新的进度条,当incProgresssetProgress 被第一次调用时。withProgress 执行完成时,进度条面板将会移除。
incProgress 函数按照指定的数值增加进度,而setProgress 可以设置指定值,并且设置需要展示的脚本
通常withProgressincProgresssetProgress 这三个函数就已经够用了。但是如果是异步或者不能够单一分装,则需要用Progress .
shiny0.14新版本中,进度条使用新的API,如果想使用老版本,每一次调用withProgress设置style=‘old’,如果不想每一次都要重新设置,则需要在server function中设置shinyOptions(progress.style="old")


例子

## Only run examples in interactive R sessions
library(shiny)
  ui <- fluidPage(
    plotOutput("plot")
  )
  
  server <- function(input, output) {
    output$plot <- renderPlot({
      withProgress(message = 'Calculation in progress',
                   detail = 'This may take a while...', value = 0, 
                   expr = {
                     for (i in 1:15) {
                       incProgress(1/15)
                       Sys.sleep(0.25)
                     }
                   })
      plot(cars)
    })
  }
  shinyApp(ui, server)

这里写图片描述

下面貌似比较实用,可以分开设置进度条

## Only run examples in interactive R sessions
if (interactive()) {

ui <- fluidPage(
  plotOutput("plot")
)

server <- function(input, output, session) {
  output$plot <- renderPlot({
    progress <- Progress$new(session, min=1, max=15)
    on.exit(progress$close())

    progress$set(message = 'Calculation in progress',
                 detail = 'This may take a while...')

    for (i in 1:15) {
      progress$set(value = i)
      Sys.sleep(0.5)
    }
    plot(cars)
  })
}
shinyApp(ui, server)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值