2016-07-27 2 views
1

특정 글꼴 군을 사용하는 플롯을 포함하는 소스 파일 (knitr)이 있습니다. 내가 경고 메시지특정 경고 메시지의 방출을 억제합니다.

grid.Call (L_textBounds에서, as.graphicsAnnot (X의 $ 라벨)을 억제하고 싶습니다 ... : 글꼴 제품군은 윈도우 글꼴 데이터베이스에서 찾을 수 없습니다

library(ggplot2) 

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

은 내가 스크립트 options(warn = -1)의 모든 경고 메시지를 표시하지 않을 수 있습니다 알고, 나는 suppressWarnings를 사용하는 방법을 알고있다. 나는 또한 tryCatch의 특정 덩어리를 둘러싸고 있습니다.

는 suppres 할 수있는 방법이 있나요 단지 grid.Call 위의 경고 전체에 파일이 있습니까? 예를 들어 사용

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

+0

아직 구현 된 것을 보지 못했지만 잘못 알고 싶습니다. –

+0

'options ("warning.expression")'단서를 제공합니까? 모든 경고 메시지를 완전히 제거하는 데에만 사용할 수 있습니다. – Hugh

+0

경고 메시지를 맞춤 설정 한 것으로 대체하는 옵션입니다. R이 메시지를 캡처하는 것이 강점은 아니지만 (지금 당장 파이썬과 비교할 생각이다) 통계에는 충분하다. :) –

답변

2

,

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

는 한계가 conditionMessage 다른 언어 (특히 기저 함수의 경우로 변환 될 수 있다는 것이다 출력을

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

생산) 텍스트를 신뢰할 수있게 식별 할 수 없습니다.

Selective suppressWarnings() that filters by regular expression을 참조하십시오.