禁止发出特定警告消息

时间:2016-07-27 04:22:14

标签: r warnings

我有一个源文件(在knitr中),其中包含使用特定字体系列的图。我想取消警告信息

  

在grid.Call(L_textBounds,as.graphicsAnnot(x $ label),...:font中   在Windows字体数据库中找不到家庭

library(ggplot2)

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

我知道我可以删除脚本options(warn = -1)中的所有警告消息,并且我知道如何使用suppressWarnings。我也可以在tryCatch

中包围一个特定的块

有没有办法只在>整个文件中抑制grid.Call警告?

1 个答案:

答案 0 :(得分:5)

使用

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