R에서 오류를 어떻게 "던지기"합니까? 데이터 프레임과 일부 열 이름을 가져 와서 기능을 수행하는 함수가 있습니다. 열이 존재하지 않으면 함수를 중지하고 그에 따라 모든 기능을 중지하고 싶습니다.
나는 살펴 보았다 recover
및 browse
및 traceback
하지만, 글쎄, 그들은 가까이하지만 내가 찾던 것 같았다.
R에서 오류를 어떻게 "던지기"합니까? 데이터 프레임과 일부 열 이름을 가져 와서 기능을 수행하는 함수가 있습니다. 열이 존재하지 않으면 함수를 중지하고 그에 따라 모든 기능을 중지하고 싶습니다.
나는 살펴 보았다 recover
및 browse
및 traceback
하지만, 글쎄, 그들은 가까이하지만 내가 찾던 것 같았다.
답변:
참조 help(tryCatch)
:
조건은 '
signalCondition
'로 표시됩니다. 또한
'stop
'및 'warning
'함수는
조건 인수 도 허용하도록 수정되었습니다 .
나중에 '참고 항목'아래에서 :
'
stop
'및 'warning
'신호 조건 및 'try
'은 본질적으로 ' '의 단순화 된 버전입니다tryCatch
.
그래서 당신은 아마 원합니다 stop
.
traceback()
하여 오류가 발생한 것을 확인하십시오). 사용 stop
에 error
의 인수 tryCatch
추적까지 의지 엉망. 그러나이 finally
인수는 추가 메시지를 던지고 추적을 유용하게 유지합니다. 정확한 주제는 아니지만 몇 가지 마이너스와 중재의 위협이 창 밖에서이 의견을 발동시킬만큼 중요하다고 생각합니다. :-)
간단한 예 :
f <- function(a, b){
if (a == 0){
stop("error message")
}
}
Dirk가 언급 한 기본 기능을 넘어서 :
R.oo 패키지는 매우 유용 드로 () 함수를 포함한 추가 예외 처리 기능을 갖는다. 일반적인 try 또는 trycatch 함수를 사용하여 예외를 포착 할 수 있습니다.
> try(throw("Division by zero.")); print("It's ok!");
Error: [2009-10-22 10:24:07] Exception: Division by zero.
[1] "It's ok!"
자세한 내용은 여기를 참조 하십시오 : http://www1.maths.lth.se/help/R/R.oo/
plot
함수를 플롯하고 try
stop
warn
모든 것이 예상대로 작동하며 원하는 거의 모든 것이 하나의 라이너입니다.
실제로이 함수 stopifnot
는 코드에서 온 전성 검사를 구현하는 데 매우 편리합니다. 여러 논리식을 취하고 거짓으로 평가되면 오류를 리턴합니다.
예 : 데이터 프레임 'df'에 열 'c'가 있는지 확인하려면 다음을 수행하십시오.
df <- data.frame(a = numeric(), b = numeric())
stopifnot(!is.null(df$c))
다음과 같은 오류가 발생합니다.
Error: !is.null(df$c) is not TRUE
assert(...)
...