実行に時間がかかる関数を作成しました(予測モデルのテストと組み合わせた巨大なデータセットでの1000以上のループのため)。
関数が呼び出されている間、ステータスを知るためmessage
に、関数のforループ内でコマンドを使用します。問題は、関数が終了した後、すべてのメッセージがすぐに表示されるのではなく、コンソールに表示されることです。だからそれは私を助けません:)
Stackoverflowで解決策を見つけようとしましたが、見つかりませんでした。たとえば、「 Rでステータスメッセージを表示する」という質問を探しました。そのトピックのすべての回答とサンプルコードは、関数が処理された後、すぐにではなく、コンソールにテキストのみを表示します。
これを解決する方法は?message
コンソールにテキストがすぐに印刷されないようにするRの設定はありますか?
注:以下で試した例では、関数と同じ結果が得られます。関数の処理後にテキストを表示します。
example1(Joshua Ulrich):
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()
}
example2(タイラー):
test.message <- function() {
for (i in 1:9){
cat(i)
Sys.sleep(1)
cat("\b")
}
}
編集:最初の例は機能します(「フラッシュコンソール」が問題でした)...しかし、私がそれをテストしたとき、私は何らかの理由でフラッシュコンソールをコメントアウトしました:S