2017-12-31 22 views
3

Rコンソールでこのコードチャンク内部抑制メッセージではなく、私は現在、次のヘッダ使用

```{r, message=FALSE} 
foo <- function(x) message(x) 
for(i in 1:10) foo(i) 
``` 

は、シミュレートされたシナリオをループが現在実行シナリオのステータスを印刷message()機能と、あります。

これらのメッセージをRStudioと最終的なHTML出力に表示しないようにしたいのですが、シミュレーションの進行状況を制御してコンソールでmessage()の出力を見たいと思っています。これは達成可能ですか?たぶん、他の引数/関数ですか?

+1

[最小限再現可能な例を最初に提供してください](https://yihui.name/en/2017/09/the-minimal-reprex-paradox/)を教えてください。 'message = FALSE'はあなたが望むものを正確に意味するので、私は尋ねています:メッセージをコンソールに書きます。それがうまくいかなければ、何か間違っているはずです。 –

+0

いいえこれは明らかにこのようには動作しませんが、尋ねたので、私は単純な例を追加しました – user2530062

+0

HTMLファイルの実際のコンパイル中にメッセージが出力されるかもしれないという事実を参照してください。 RStudio内でコードを実行してコードの正確性を評価することなく、コードがマークダウンのコードチャンク内にある場合の状況をカバーしていません。 – user2530062

答えて

0

ステータスをファイルに書き込むことができます(これは回避策ですが、より直接的な回答が必要です)。例えば

:この例のメッセージで

file <- file("status.txt", open = "wt") 
sink(file, type = "message") 
message("all good") 

は表示されません - それはstatus.txtファイルに書き込まれます。

はあなたがこの例を試すことができ、特定の機能を使用して、設定を反復処理している場合:

foo <- function(x) { 
    message(x) 
} 

file <- file("status.txt", open = "wt") 
sink(file, type = "message") 
for(i in 1:3) { 
    foo(i) 
} 

機能fooを(メッセージ)の値を返す必要があります、しかし、それはstatus.txtファイルに追加します。

status.txtファイルの変更を、-f引数のbash tailコマンドを使用して追跡できます。最初にRをバックグラウンドに送信し、コンソールでtail -f status.txtを使用します。

0

1つの方法は、これをファイルの先頭に挿入することです。

mymessage <- function (text) { 
    if(knitr::opts_knit$get('out.format') != NULL) message(text) 
} 

あなたがknitr内にある場合、最近のバージョンはknitr::is_latex_outputと同様のを知っているために、様々な方法があります。

+0

私はこれがどこにあるのか知っていると思うが、それはうまくいかない(引数は長さがゼロである)、 '=='があるべきだと思う? – user2530062

+0

私は '!is.null()'(明らかに)と比較を置き換えましたので、今はエラーがありません。しかし、それはとにかく動作しません。 – user2530062

関連する問題