如何被告知循环/ lapply的持续进展

时间:2012-12-12 03:17:55

标签: r loops

R中,我有时会感到很长for looplapply,我想知道正在进行的进展。

以下内容符合我的想法但不起作用的精神:

lapply(1:n,function(i) { print(i); MAIN COMPUTATIONS })

理想情况下,上述内容会在i的每次新迭代开始时打印lapply

问题:如何获得lapplyfor loop已完成的迭代次数的持续进度更新?

3 个答案:

答案 0 :(得分:7)

听起来你在Windows上使用RGui。其中一个菜单中应该有一个选项,告诉它不缓冲输出。或者,您可以在每次打印后致电flush.console

lapply(1:1000, function(i){print(i); flush.console()})

请注意,这会使代码变慢一些。

答案 1 :(得分:6)

使用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%

或使用选项打印,以获取每次迭代的结果

     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]

答案 2 :(得分:3)

您可能还想查看winProgressBartkProgressBartxtProgressBar等功能。 windows和tk版本很不错,因为它们可以向您显示您的进度,但不会使您的输出混乱。