Người cuối cùng không in trong thời gian thực, hãy thử nó như thế này:
for(i in 1:10){
Sys.sleep(0.1)
print(i)
}
này có vẻ tốt đẹp trong Rstudio , nhưng trong Rgui cổ điển, bạn phải bấm vào giao diện điều khiển để nó làm mới (tăng giấc ngủ ví dụ bằng cách Sys.sleep(0.5)
giúp thấy điều đó). Bạn có thể phá vỡ mà bằng cách sử dụng flush.console
mà xóa bộ đệm:
for(i in 1:10){
Sys.sleep(0.1)
print(i)
flush.console()
}
Hoặc trong Windows bạn có thể chọn Misc
trong thanh công cụ phía trên và bỏ chọn buffered output
.
Nếu mục tiêu của bạn là để theo dõi quá trình vòng lặp của bạn, các phương pháp trên cảm thấy chút akward (ít nhất là đối với mắt của tôi) khi bạn đang chạy thông qua số lượng lớn các lần lặp lại. Trong trường hợp đó nó có thể đẹp hơn để sử dụng thanh tiến trình:
n<- 1000
pb <- txtProgressBar(min = 0, max = n, style = 3) #text based bar
for(i in 1:n){
Sys.sleep(0.001)
setTxtProgressBar(pb, i)
}
close(pb)
Hoặc một cái gì đó thậm chí đẹp hơn:
library(tcltk)
n<- 1000
pb <- tkProgressBar(title = "Doing something", min = 0, max = n, width = 200)
for(i in 1:n){
Sys.sleep(0.001)
setTkProgressBar(pb, i, label=paste(round(i/n*100,1),"% done"))
}
close(pb)
Nguồn
2013-03-28 05:47:43
Rất tiếc, có thể bạn nên tạo một ví dụ thực tế. Cảm ơn bạn đã xóa mọi thứ. – Eric
Eric, kiểm tra câu trả lời cập nhật của tôi, tôi đã thêm các ví dụ về chức năng mà làm cho bạn một thanh tiến trình tốt đẹp. –