我写了一个R脚本,做了很多繁重的计算。脚本进入while循环并进行大约16次(平均循环持续3到5分钟)。
我希望能够跟踪"计算进展:能够看到已完成了多少工作以及还有多少工作要做。所以我只打印了迭代次数和完成循环的计算时间。
我想要添加的是一种"进度条",我用ggplot2直方图表示。每次计算完成后,我都会更新图表("已完成"区域变大,"剩余"区域随后减小),然后我打印出来。但是,没有情节显示在"情节" R studio的区域,而功能仍在执行。一旦整体计算(16个循环)完成,所有绘图都会出现。
所以我的问题是:是否有可能在while循环结束时显示一个情节,即使"整体"计算还没结束?
如果我不清楚,请告诉我。
提前感谢您的回答。
编辑:Sys.sleep()
非常适合我的意图。
如果有人对代码感兴趣,请按照以下步骤进行操作:
# Big calculation
iter <- iter + 1
d <- data.frame(x1 = c(1,1), x2 = c(iter/maxIt, 1 - iter/maxIt),
x3 = c("finished", "remaining"))
print(qplot(d$x1, d$x2, fill = factor(d$x3), geom = "histogram", stat = "identity"))
Sys.sleep(1)
# Preparing the next loop
答案 0 :(得分:0)
timearray <- NULL # array of time used by each iteration
for (wait in c(3,2,5,4,6)) {
s <- Sys.time() # iteration time start
Sys.sleep(3) # do your calculation -- I just wait here
s <- Sys.time() - s # now s is last iteration time
timearray <- c(timearray, s) # add this new value to array
plot(timearray, type='h', main='Iteration time') # plot the array
}
可能是那样的吗?