R에 "warning()"이 나타날 때 루프 깨짐
문제가 있습니다.여러 파일을 처리하기 위해 루프를 실행하고 있습니다.저의 매트릭스는 엄청나기 때문에 조심하지 않으면 기억력이 부족해지는 경우가 많습니다.
경고가 발생할 경우 루프를 벗어날 수 있는 방법이 있습니까?루프를 계속 실행하고 훨씬 나중에 실패했다고 보고합니다.짜증나는.오 현명한 스택 오버플로 아이디어가 있습니까?
다음을 사용하여 경고를 오류로 전환할 수 있습니다.
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
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
전역 설정warn
옵션:
options(warn=1) # print warnings as they occur
options(warn=2) # treat warnings as errors
"경고"는 "오류"가 아닙니다.루프가 경고에 대해 종료되지 않음(단, 예외)options(warn=2)
).
언급URL : https://stackoverflow.com/questions/8217901/breaking-loop-when-warnings-appear-in-r
'programing' 카테고리의 다른 글
Spring Web Client에서 프록시 설정이 작동하지 않음 (0) | 2023.06.23 |
---|---|
그룹화 및 조건 포함 개수 (0) | 2023.06.23 |
잘린 역추적 대신 전체 역추적을 인쇄하려면 어떻게 해야 합니까? (0) | 2023.06.23 |
VBA에서 트림()과 트림 $()의 차이점은 무엇입니까? (0) | 2023.06.23 |
탄성검색 Spring boot 통합 테스트 (0) | 2023.06.23 |