我想編寫一個函數,向用戶顯示一個狀態消息,顯示類似時間,完成百分比和進程當前狀態的狀態消息。我可以處理組裝信息,但是我想要做的不只是打印到控制檯,而是讓它向上滾動,一條消息接着一條。我真的很喜歡這個消息,而不用像message()
那樣滾動,也沒有任何圖形。這可能與R?顯示R中的狀態消息
回答
這樣的事情呢?
for(i in 1:10) {
Sys.sleep(0.2)
# Dirk says using cat() like this is naughty ;-)
#cat(i,"\r")
# So you can use message() like this, thanks to Sharpie's
# comment to use appendLF=FALSE.
message(i,"\r",appendLF=FALSE)
flush.console()
}
不要使用'cat()',使用'message()'(可以被抑制),例如今天在R-bloggers的帖子中討論了與cat()'抱怨。 –
@Dirk:它必須是'message(...,appendLF = FALSE)',否則滾動消息會出現在OP特別想要避免的控制檯上。 – Sharpie
@Dirk用'message()'替換'cat()'爲每個更新添加一個換行符。你需要額外做些什麼來防止換行嗎? FWIW,'txtProgressBar'使用'cat()'。 –
可能有更優雅的方式來做到這一點,但是這可以做到這一點:
test.message <- function() {
for (i in 1:9){
cat(i)
Sys.sleep(1)
cat("\b")
}
}
如果你自動生成你的消息,你需要計算有多少\ B個字符輸出以備份正確的金額,但這非常簡單。
utils
包中包含txtProgressBar
和用於更新它的函數,可用於顯示進程的完成百分比。
查看對txtProgressBar
呼籲的更新的方式無需滾動控制檯處理實例期間創建的up1
,up2
和up3
功能。
這裏有一些金光閃閃的金光閃閃。從?tcltk::tkProgressBar
。
pb <- tkProgressBar("test progress bar", "Some information in %",
0, 100, 50)
Sys.sleep(0.5)
u <- c(0, sort(runif(20, 0 ,100)), 100)
for(i in u) {
Sys.sleep(0.1)
info <- sprintf("%d%% done", round(i))
setTkProgressBar(pb, i, sprintf("test (%s)", info), info)
}
Sys.sleep(5)
close(pb)
這對於完整性來說確實很酷,但我目前的需求僅限於純文本解決方案。 –
當tcltk彈出時,我沒有把你的問題讀到最後。這是一個衝動的答案,對此我表示歉意。也許你將來需要一些時間。 –
+1非常棒。它甚至激勵我學習一點TclTk。 – Iterator
- 1. 顯示狀態/消息
- 2. PowerShell SCCM顯示狀態消息查詢
- 3. 狀態消息
- 4. 這是在asp.net中顯示狀態消息的最佳方式
- 5. 如何在主活動中的TextView上顯示狀態消息?
- 6. 如何在r中顯示消息?
- 7. 如何在Gnome面板中顯示狀態消息?
- 8. 如何在iOS中設置狀態欄以顯示消息?
- 9. 在Facebook應用程序開發中顯示狀態消息
- 10. 在ASP.NET webforms中顯示一般狀態消息
- 11. NRPE狀態消息
- 12. 顯示狀態區域的驗證消息
- 13. 顯示服務工作人員狀態的消息
- 14. 狀態欄進度表不顯示消息
- 15. 狀態欄不立即顯示消息,有時會崩潰
- 16. MVC重置模型狀態,以便錯誤消息不顯示
- 17. 如何在文件上傳時顯示狀態消息?
- 18. 顯示有關狀態欄上連接狀態的信息
- 19. div中的狀態欄消息
- 20. iOS系統狀態欄中的消息
- 21. 顯示消息
- 22. 顯示消息
- 23. 顯示消息
- 24. 顯示消息
- 25. 顯示消息
- 26. 顯示消息
- 27. 顯示消息
- 28. 顯示消息
- 29. 顯示消息
- 30. Ajax錯誤信息只顯示狀態
「這是R.沒有如果,只有怎麼樣。」 --Simon Blomberg –