私は例えば、関数内でqplotのbinwidth警告を抑制する方法は?
> library(ggplot2)
> d=rnorm(100)
> myfun=function(x) qplot(x)
はそれが警告与え実行すると、ヒストグラムを描画するためにqplot()
を使用する関数を書いています:警告を抑止するには
> myfun(d)
stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.
を、私は、ビン幅を自分で計算してみましたこれは、エラーを与え、プロットされていません。
> myfun=function(x) print(qplot(x, binwidth=diff(range(x))/30))
> myfun(d)
Error in diff(range(x)) : object 'x' not found
私は2つの関連質問がある:
- ここでは何が起こっていますか?オブジェクト 'x'が見つからないのはなぜですか?
- 警告が生成されないように関数を記述する方法はありますか?
ありがとう!
'myfun(as.data.frame(d))'を実行すると 'qplot(d、data = x、binwidth = diff(range(d))/ 30)'になります。したがって、 'binwidth'引数は指定されたデータフレームのコンテキストで厳密に評価されるように見えます。それが機能かバグかどうかはわかりません。 –
質問は、関数内のメッセージをどのように抑止するかではなく、どのように抑止するかです。例えば、 'suppressMessages(qplot(rnorm(10)))'は依然としてメッセージを与えます。 – kmm
@ダニエル - 問題はプラットフォームやバージョンに依存しているようです。あなたのソリューションはR 2.12.1とggplot2 0.8.9を使ってMac上で動作しますが、WindowsではR 2.13.0とggplot2 0.8.9では動作しません。残念ながら、Windowsは私のターゲットプラットフォームです。 –