R 向函数添加进度条

R 向函数添加进度条,r,function,progress-bar,R,Function,Progress Bar,我已经看了几个问题,但找不到一个不使用循环的解决方案。我看了又看。 现在,我如何添加与此功能同时工作的进度条: prog<-function(){ print("This is a test") Sys.sleep(05) setTxtProgressBar() } 谢谢。有一个包pbapply,它为应用函数提供了一个进度条,使用: pblapply(X, FUN, ..., cl = NULL) 它的工作原理与普通的apply-功能类似 此函数:pblappy(1:10,

我已经看了几个问题,但找不到一个不使用循环的解决方案。我看了又看。 现在,我如何添加与此功能同时工作的进度条:

prog<-function(){
  print("This is a test")
  Sys.sleep(05)
  setTxtProgressBar()
}

谢谢。

有一个包
pbapply
,它为应用函数提供了一个进度条,使用:

pblapply(X, FUN, ..., cl = NULL)
它的工作原理与普通的
apply
-功能类似

此函数:
pblappy(1:10,函数(x){Sys.sleep(02);print(x)})
给出了以下输出:

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


相当整洁。我不知道它是否有用,但值得一看。

进度条的问题是,您必须以某种方式跟踪进度,这对于for循环来说很容易(如果每个步骤占用的时间大致相同)。Imho prog应该是低的,因为它将系统设置为睡眠0.5秒,并且如果不给出另一个y参数,它会执行202次。啊,更改Sys.sleep部分似乎可以节省一些时间。谢谢您看过
pbapply
-包了吗(但不确定它是否可以用于您的用例)…我将进一步探讨该包。乍一看,它似乎和我在问题的编辑部分所做的一样。不过,我会花更多的时间来看看它是如何工作的,虽然老实说这不是我打算做的,但这只是一个开始。
|                                                  | 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