2016-07-27 8 views
1

特定のフォントファミリを使用するプロットを含むソースファイル(knitr)があります。私は警告メッセージ特定の警告メッセージの放出を抑制する

grid.Call(L_textBoundsで、as.graphicsAnnot(Xの$ラベル)を抑制したいのですが、...:フォント ファミリは、Windowsのフォントデータベース内に見つからない

library(ggplot2) 

ggplot(mtcars, aes(mpg, cyl, label = gear)) + 
    geom_text(family = "helvet") 

私は、スクリプトoptions(warn = -1)に、すべての警告メッセージを抑制することができます知っている、と私はsuppressWarningsを使用する方法を知っている。私もtryCatchで特定のチャンクを囲むことができます。

suppresする方法があります唯一のgrid.Call上記の警告全体ファイルですか?例えば

+0

私はこれがまだ実装されているのを見たことがありませんが、私は間違っていることを証明したいと思います。 –

+0

'options(" warning.expression ")'はヒントを提供しますか?すべての警告メッセージを完全に削除するためにのみ使用できます。 – Hugh

+0

警告メッセージをカスタムメイドのものに置き換えるオプションがあります。 Rのメッセージのキャプチャは強固なものではありません(私は現在Pythonとの比較を考えています)が、統計には十分です。 :) –

答えて

2

使用

withCallingHandlers({ 
    <your code> 
}, warning=function(w) { 
    if (<your warning>) 
     invokeRestart("muffleWarning") 
}) 

x = 1 
withCallingHandlers({ 
    warning("oops") 
    warning("my oops ", x) 
    x 
}, warning=function(w) { 
    if (startsWith(conditionMessage(w), "my oops")) 
     invokeRestart("muffleWarning") 
}) 

出力

[1] 1 
Warning message: 
In withCallingHandlers({ : oops 
> 

制限はconditionMessageは基底関数からの場合は特に(他の言語に翻訳することができることである生成)、テキストが確実に識別されないようにします。

Selective suppressWarnings() that filters by regular expressionを参照してください。

関連する問題