[英]How to show the progress of code in R?
我现在正在处理大型数据集,某些功能可能需要数小时才能处理。 我想知道如何通过进度条或数字(1,2,3,...,100)显示代码的进度。 这是一个例子。 谢谢。
require(Kendall)
mydata=matrix(rnorm(6000*300),ncol = 300)
result=as.data.frame(matrix(nrow = 6000,ncol = 2))
for (i in 1:6000) {
abc=MannKendall(mydata[i,])
result[i,1]=abc$tau
result[i,2]=abc$sl
}
顺便说一句,我发现链接https://ryouready.wordpress.com/2009/03/16/r-monitor-function-progress-with-a-progress-bar/非常有用。 但是,我不知道如何将链接中的代码与我自己的函数结合起来。 有人有想法吗? 谢谢。 以下是上述链接的代码。
total <- 20
# create progress bar
pb <- txtProgressBar(min = 0, max = total, style = 3)
for(i in 1:total){
Sys.sleep(0.1)
# update progress bar
setTxtProgressBar(pb, i)
}
close(pb)
你可以添加一个if语句来输出每100次左右的迭代次数
for (i in 1:6000) {
abc=MannKendall(mydata[i,])
result[i,1]=abc$tau
result[i,2]=abc$sl
if(i %% 100 == 0){
cat(i)
cat("..")
}
}
它给你输出
100..200..300..400..
这应该工作:
mydata=matrix(rnorm(6000*300),ncol = 300)
result=as.data.frame(matrix(nrow = 6000,ncol = 2))
progression<-winProgressBar(title = "Progress bar", min = 0,max = 6000 , width = 300)
for (i in 1:6000) {
abc=MannKendall(mydata[i,])
result[i,1]=abc$tau
result[i,2]=abc$sl
setWinProgressBar(progression, i, title=paste(round(progress/6000)*100,"% done"))
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.