在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()})
Run Code Online (Sandbox Code Playgroud)
请注意,这会使代码变慢一点.
使用plyr的解决方案
l_ply(1:10,function(x) x+1,.progress='text')
Run Code Online (Sandbox Code Playgroud)
或者您可以使用定义进度 progress_text
l_ply(1:10000,function(x) x+1,.progress= progress_text(char = '*'))
|*********************************************************************| 100%
Run Code Online (Sandbox Code Playgroud)
或者使用选项打印,以获得每次迭代的结果
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]
Run Code Online (Sandbox Code Playgroud)