답변:
다음을 사용하여 경고를 오류로 전환 할 수 있습니다.
options(warn=2)
경고와 달리 오류는 루프를 중단합니다. 훌륭하게도 R은 이러한 특정 오류가 경고에서 변환되었음을보고합니다.
j <- function() {
for (i in 1:3) {
cat(i, "\n")
as.numeric(c("1", "NA"))
}}
# warn = 0 (default) -- warnings as warnings!
j()
# 1
# 2
# 3
# Warning messages:
# 1: NAs introduced by coercion
# 2: NAs introduced by coercion
# 3: NAs introduced by coercion
# warn = 2 -- warnings as errors
options(warn=2)
j()
# 1
# Error: (converted from warning) NAs introduced by coercion
options("warn"=0)
.
op=options(warn=2)
, 2) 일을하고와 다음 3) 리셋 options(op)
으로 돌아갑니다, warn=0
이 경우입니다.
R을 사용하면 조건 처리기를 정의 할 수 있습니다.
x <- tryCatch({
warning("oops")
}, warning=function(w) {
## do something about the warning, maybe return 'NA'
message("handling warning: ", conditionMessage(w))
NA
})
결과적으로
handling warning: oops
> x
[1] NA
tryCatch 후에 실행이 계속됩니다. 경고를 오류로 변환하여 종료하기로 결정할 수 있습니다.
x <- tryCatch({
warning("oops")
}, warning=function(w) {
stop("converted from warning: ", conditionMessage(w))
})
또는 조건을 적절하게 처리 (경고 호출 후 계속 평가)
withCallingHandlers({
warning("oops")
1
}, warning=function(w) {
message("handled warning: ", conditionMessage(w))
invokeRestart("muffleWarning")
})
어느 인쇄
handled warning: oops
[1] 1
for
:) 더 나은 것
options(warn=1)
하여 기본 설정을 복원하십시오.