我需要顯示循環內各種變量的變化值(以跟蹤我的分配算法正在做什麼;數據集太大,無法每次都等待輸出以確定行爲是否合意)。如何在不清除控制檯的情況下顯示更新的輸出?
目前我使用以下邏輯...
i <- 90
while (i < 105) {
cat("\r", paste("count value = ",as.character(i %% 99)))
Sys.sleep(0.25)
i <- i + 1}
這將顯示輸出作爲...
count value = 11
的問題是,上述代碼僅覆蓋所顯示的輸出。所以,當我們到i = 101,屏幕顯示...
count value = 28
的,而不是...
count value = 2
...其中最後一個數字8是一個遺留下來的先前顯示輸出。
該命令僅覆蓋顯示器。
cat("\014", paste("count value = ",as.character(i %% 99)))
可以使用,但它每次清除整個控制檯這是另一個問題。
有沒有辦法清除顯示行而不清除控制檯,但不只是覆蓋?這是我正在做的一個小版本,當使用大尺寸的多個數字進行顯示時,它變得非常混亂。
爲什麼你使用'while'循環時,你應該使用'for'循環? – Roland
@Roland沒有特別的理由,除了較長的代碼之外,是否有區別? – Gaurav
這是非常不尋常的,並且可讀性稍差(當然,編寫起來不太方便)。自從一年多以來,我沒有在R中使用過「while」循環。 (如果我真的需要一個,我可能會轉向Rcpp。) – Roland