2016-07-27 1 views
1

У меня есть исходный файл (в слонах), содержащий графики, в которых используется конкретное семейство шрифтов. Я хотел бы, чтобы подавить предупреждающие сообщенияПодавлять любое излучение конкретного предупреждающего сообщения

В grid.Call (L_textBounds, as.graphicsAnnot (х $ этикетка), ...: шрифт семья не найден в базе шрифтов Windows,

library(ggplot2) 

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

Я знаю, что может подавить все предупреждающие сообщения в сценарии options(warn = -1), и я знаю, как использовать suppressWarnings. Я могу также окружать определенный кусок в tryCatch.

есть ли способ suppres s только grid.Call предупреждение выше по всему файла?

+0

Мне еще предстоит это реализовать, но я хотел бы, чтобы меня доказали неправильно. –

+0

Есть ли опции ("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.

 Смежные вопросы

  • Нет связанных вопросов^_^