目录
4.Overwriting a printed line using \r
我们都一直在等待一个for循环完成,或者一个特别复杂的函数。多年来,在跟踪我的R代码进度时,我遇到了一些启示。这篇文章记录了我找到在R中创建进度条知识点的顺序!
1.The print()
function
for(i in 1:500){
# Sleep for 0.1 seconds
Sys.sleep(0.01)
# Print progress
print(paste("Finished", i, "of", n))
}
2.The cat() function
for(i in 1:500){
# Sleep for 0.1 seconds
Sys.sleep(0.01)
# Print progress
cat("Finished", i, "of", n, "\n")
}
3.The modulus operator(%%)
for(i in 1:500){
# Sleep for 0.1 seconds
Sys.sleep(0.01)
# Print progress
if(i %% 100 == 0){
cat("Finished", i, "of", n, "\n")
}
}
4.Overwriting a printed line using \r
for(i in 1:500){
# Sleep for 0.1 seconds
Sys.sleep(0.01)
# Print progress
cat("\rFinished", i, "of", n)
}
5.progress()function
library(basicPlotteR)
for(i in 1:500){
# Sleep for 0.1 seconds
Sys.sleep(0.01)
# Print progress
progress(i, n)
}
6. txtProgressBar()函数
# Initialise a progress bar
pb <- txtProgressBar(min = 1, max = n, style = 3)
for(i in 1:500){
# Sleep for 0.1 seconds
Sys.sleep(0.01)
# Print progress
setTxtProgressBar(pb, i)
}
close(pb)
每种监控进度的方法在不同的情况下都很有用。
- 虽然最后两个选项看起来很棒,但它们只对循环内部有用。
- \r让我大吃一惊,应该适用于大多数语言!
- 模数(%%)可能是我使用最多的一个,允许我在不向屏幕打印数百或数千行的情况下检查我的进度。
- 任何想使用和查看我的进度()函数的代码的人,您都可以在github上找到它。它是我的basicPlotteR包的一部分。
来源:
Creating a progress bar in R | Joseph Crispell (这篇文章写的实在是太棒了,总结了R中的进度条函数,并且通过动画展示了每个函数的结果,每个函数的以一个简短易懂的代码进行介绍,非常有趣的文章!)