2016-08-22 10 views
1

問題:私はRパッケージ用のスクリプトを作成しようとしており、ユーザーに慎重を期すために、私はスクリプトの最後にそれらをリセットすることができるように何か。これらのうちいくつかはリセットできないので警告メッセージが表示されるのは正常ですが、その出力がユーザーに届かないようにするためにsuppressWarnings()を使用しています。ここでは減少した例です:初めてこの関数を呼び出すpar()をリセットするときにRスクリプトのsuppressWarningsを使用した遅延メッセージが表示される

Plot4Things <- function(){ 

    # suppress warnings when saving parameters 
    suppressWarnings(opar <- par()) 

    # adjust parameter 
    par(mfrow = c(2,2)) 

    plot(seq(1,20), pch = 16) 
    plot(seq(1,20), pch = 17) 
    plot(seq(1,20), pch = 18) 
    plot(seq(1,20), pch = 19) 

    # suppress warnings while restoring original parameters 
    suppressWarnings(par(opar)) 
} 

は私に何の警告メッセージまたはコンソール出力を与えません。良いグラフで、を使用してmfrowオプションが正しくリセットされていることを確認します。しかし、私は次の出力を得るPlot4Things()関数を呼び出す後続の各時間:

Plot4Things() 
Plot4Things() 
# There were 12 warnings (use warnings() to see them) 

警告は(私がしようとしていないよので、細かいである)をリセットすることができないグラフィカルなパラメータについての無害なものです。私はすべてのパラメータを保存/リセットのこのメソッドに結びついているわけではないので、これを行うための良い方法はありますか?遅延メッセージが表示されなくなる警告メッセージを表示する方法はありますか?深刻なダウン私は実際には、私は将来の私の文章を向上させることができるように行動を理解したい。

ありがとうございます!

opar <- par(no.readonly = TRUE) 

その後、あなたは完全にsuppressWarningsを使用して回避することができます:あなたのパラメータを設定し、復元するための古いものを保存し、no.readonlyを使用するには

+1

原則として、リセットを 'on.exit'に入れてください。これにより、早期中止につながるエラーが関数内にあっても実行されることが保証されます。これは* all *クリーンアップのために行う必要があります。 –

答えて

1

そして、コメントで述べたように、あなたの関数の先頭にparを保存した後、直接宣言on.exitにクリーンアップを置く:注意点として

opar <- par(no.readonly = TRUE) 
on.exit(par(opar)) 

、ドキュメントの例では警告している、と...これは一般的な良い習慣ではありません

ことno.readonlyを使っに関して、

...しかし説明しないでくださいなぜ。したがって、私はこの警告を無視するだけです。

+0

助けてくれてありがとう - 私はすべてのスクリプトを変更してしまいましたが、もはや問題を抱えていません(ただし、 'suppressWarnings() 'の動作ではまだ混乱しています) –

関連する問題