0
点赞
收藏
分享

微信扫一扫

RNote108---显示R程序的运行进度


本来是想找显示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)

RNote108---显示R程序的运行进度_进度条

参数说明:

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)
}

RNote108---显示R程序的运行进度_参数说明_02

估计完成时间

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)
}

显示下载百分比,以及剩余需要完成的时间

RNote108---显示R程序的运行进度_进度条_03

RNote108---显示R程序的运行进度_sed_04

计算执行的时间

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)
}

RNote108---显示R程序的运行进度_进度条_05

参数说明:

创建进度条的函数

函数

说明

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文档即可


举报

相关推荐

0 条评论