显示R程序的运行进度

来源:互联网 发布:鄂南高中2017高考数据 编辑:程序博客网 时间:2024/06/05 10:41

本来是想找显示shiny中程序运行进度的方法,不过只看到显示循环执行进度的~Whatever,记录下吧

一、tcltk包

案例:

library(tcltk)  u <- 1:2000  #开启进度条    pb <- tkProgressBar(title="进度",label="已完成 %", min=0, max=100, initial = 0, width = 300)  for(i in u) {     info<- sprintf("已完成 %d%%", round(i*100/length(u)))     setTkProgressBar(pb, value = i*100/length(u), title = sprintf("进度 (%s)",info),label = info)  }   #关闭进度条  close(pb)  

这里写图片描述

参数说明:

tkProgressBar(title = "R progress bar", label = "",              min = 0, max = 1, initial = 0, width = 300)getTkProgressBar(pb)setTkProgressBar(pb, value, title = NULL, label = NULL)## S3 method for class 'tkProgressBar'close(con, ...)
函数 说明 tkProgressBar 显示包含标签和进度条的部件 setTkProgessBar 用以更新值和标签 具体参数设置 title, label 字符串,分别给定对话框窗口的标题和标签 min, max 数值型,进度条的范围 initial, value 进度条的初始值 width 进度条的像素 pb, con tkProgressBar 的对象

二、progress包

可以配置进度条,显示百分比、经过时间、估计完成时间。

案例:

默认参数
library(progress)pb <- progress_bar$new(total = 100)for (i in 1:100) {  pb$tick()  Sys.sleep(1 / 100)}

这里写图片描述

估计完成时间
pb <- progress_bar$new(  format = "  downloading [:bar] :percent eta: :eta",  total = 100, clear = FALSE, width= 60)for (i in 1:100) {  pb$tick()  Sys.sleep(1 / 100)}### 修改部分参数pb <- progress_bar$new(  format = "  完成百分比 [:bar] :percent 剩余时间: :eta",  total = 500, clear = FALSE, width= 60)for (i in 1:500) {  pb$tick()  Sys.sleep(1 / 100)}

显示下载百分比,以及剩余需要完成的时间
这里写图片描述

这里写图片描述

计算执行的时间
pb <- progress_bar$new(  format = "  完成百分比 [:bar] :percent 执行时间 :elapsed",  total = 500, clear = FALSE, width= 60)for (i in 1:500) {  pb$tick()  Sys.sleep(1 / 100)}

这里写图片描述

参数说明:

创建进度条的函数
函数 说明 progress_bar$new() 创建进度条 参数设置 format 可以进度条的格式,默认是百分比”[:bar] :percent”。进度条是在左边的括号内,百分比是在右边打印的 total 进度总数,默认100 width 进度条宽度,默认是当前终端页面的宽度-2 stream 进度条的输出方式,默认stderr(),但是在Rstudio下有bug,此时使用标准输出stdout 。如果不在终端或者Rstudio中输出,则无进度条打印 complete 完成的标识,默认为”=” incomplete 未完成的标识,默认为”-“ callback 进度条结束时,调用回调函数。 进度条对象本身作为单个参数传递给回调函数 clear 进度条结束时,是否清除。默认清除 show_after 几秒之后在屏幕上显示进度条,对于非常短的过程,可能根本不值得展示。默认1/10秒 force 是否强制显示进度条,即使给定的(或默认的)流似乎不支持它
使用进度条的函数

有两个函数更新进度条:
progress_bar$tick() 按照1个或者其他指定的个数增加进度条的进度
progress_bar$update 按照比例
进度条在第一个tick命令后显示,这对于长时间的计算可能是不可取的,因为在第一次运行之前没有显示任何东西。在计算或者下载的时候设置tick(0)可以即时展示进度条。

函数 说明 :bar 进度条本身 :current 当前进度数 :total 总进度数 :elapsed Elapsed time in seconds :eta 估计完成时间 :percent 完成百分比 :rate 下载速率,每秒字节数 :bytes 显示字节。如果你事先不知道文件的大小,可以对下载或文件读取有用 :spin 显示一个微调器,即使进程在0时也会更新

REF

Package文档即可

原创粉丝点击