问题描述
我看了几个问题,但是找不到不使用循环的解决方案.我在此处和.现在,我如何添加与此功能完全相同的进度条:
I've looked at a couple of questions but couldn't find a solution that doesn't use loops. I've looked here and here.Now, how could I add a progress bar that works exactly at the same time as this function:
prog<-function(){
print("This is a test")
Sys.sleep(05)
setTxtProgressBar()
}
上面是一个虚拟函数,我想到了使用 system.time
来捕获执行打印命令所花费的时间,并将其用于进度条.我如何在不使用for循环的情况下完成这项工作?编辑我试过了,但是还是很慢:
The above is a dummy function and I thought of using system.time
to capture the time it takes for the print command to execute and use this for the progress bar. How could I make this work, without using a for loop?EDITI tried this but it is still slow:
prog<-function(y=sort(runif(200)),...){
pb<-txtProgressBar(...)
values<-c(0,y,1)
lapply(values, function(x){
Sys.sleep(0.5)
setTxtProgressBar(pb,x)})
Sys.sleep(1)
close(pb)
}
谢谢.
推荐答案
有一个软件包 pbapply
,它为使用以下功能的应用功能提供了进度条:
There is a package pbapply
, which provides a progress bar for apply-functions using:
pblapply(X, FUN, ..., cl = NULL)
它的工作原理类似于普通的 apply
功能.
It works just like a normal apply
-function.
此函数: pblapply(1:10,function(x){Sys.sleep(02); print(x)})
给出了这样的输出:
This function: pblapply(1:10, function(x) {Sys.sleep(02); print(x)})
gave this output:
| | 0 % ~calculating [1] 1
|+++++ | 10% ~18s [1] 2
|++++++++++ | 20% ~16s [1] 3
|+++++++++++++++ | 30% ~14s [1] 4
|++++++++++++++++++++ | 40% ~12s [1] 5
|+++++++++++++++++++++++++ | 50% ~10s [1] 6
|++++++++++++++++++++++++++++++ | 60% ~08s [1] 7
|+++++++++++++++++++++++++++++++++++ | 70% ~06s [1] 8
|++++++++++++++++++++++++++++++++++++++++ | 80% ~04s [1] 9
|+++++++++++++++++++++++++++++++++++++++++++++ | 90% ~02s [1] 10
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 20s
非常整洁.我不知道是否有帮助,但是值得一看.
Pretty neat. I don't know if it helps, but worth taking a look.
这篇关于向功能添加进度条的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!