在R
中,我有时会有一个很长的for loop
或lapply
我想知道的正在进行的进度。
以下内容符合我想要但不起作用的精神:
lapply(1:n,function(i) { print(i); MAIN COMPUTATIONS })
理想情况下,上述内容将i
在lapply
.
问题:我如何获得我lapply
或for loop
已经完成多少次迭代的持续进度更新?
听起来您在 Windows 上使用 RGui。在其中一个菜单中应该有一个选项来告诉它不要缓冲输出。或者,您可以flush.console
在每次打印后调用。
lapply(1:1000, function(i){print(i); flush.console()})
请注意,这会稍微减慢代码速度。
使用 plyr 的解决方案
l_ply(1:10,function(x) x+1,.progress='text')
或者您可以使用定义您的进度progress_text
l_ply(1:10000,function(x) x+1,.progress= progress_text(char = '*'))
|*********************************************************************| 100%
或使用选项 print ,以获取每次迭代的结果
l_ply(1:4,function(x) x+1,.progress= progress_text(char = '+'),.print=TRUE)
| | 0%[1] 2
|++++++ | 25%[1] 3
|+++++++++++++++ | 50%[1] 4
|++++++++++++++++++++++ | 75%[1] 5
|++++++++++++++++++++++++++++++++ | 100%[1]
您可能还想查看winProgressBar
、tkProgressBar
或等函数txtProgressBar
。windows 和 tk 版本很好,因为它们可以显示您的进度,但不会弄乱您的输出。