문제

r에서 오류를 어떻게 "던지는"방법은 무엇입니까? 데이터 프레임과 일부 열 이름을 사용하는 함수가 있으며 그와 함께 작업을 수행합니다. 열이 존재하지 않으면 함수가 중지하고 모든 기능에 따라 모든 기능을 중지하기를 원합니다.

나는 보았다 recover 그리고 browse 그리고 traceback 그러나 글쎄, 그들은 가까이있는 것처럼 보였지만 내가 찾고있는 것은 아닙니다.

도움이 되었습니까?

해결책

보다 help(tryCatch):

조건은 'signalCondition'. 또한,
'stop' 그리고 'warning'기능도 수락하도록 수정되었습니다
조건 인수.

그리고 나중에 '참조'아래 :

'stop' 그리고 'warning'신호 조건 및'try'본질적으로 단순화 된 버전'tryCatch'.

그래서 당신은 아마 원할 것입니다 stop.

다른 팁

Simple example:

f <- function(a, b){ 

    if (a == 0){ 
            stop("error message")
    }
 }

Dirk가 언급 한 기본 기능을 넘어서

그만큼 R.OO 패키지 매우 유용한 Throw () 함수를 포함하여 추가 예외 처리 기능이 있습니다. 일반적인 시도 또는 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/

실제로 기능 stopifnot 코드에서 세력 검사를 구현하는 것이 매우 편리합니다. 몇 가지 논리적 표현이 필요하며 오류가 거짓으로 평가되면 오류를 반환합니다.

예 : Dataframe 'df'에 열 'c'가 존재하는지 확인하려면 :

df <- data.frame(a = numeric(), b = numeric())
stopifnot(!is.null(df$c))

다음 오류가 발생합니다.

Error: !is.null(df$c) is not TRUE

열이 존재하는지 확인하고 원하는대로 할 수 있습니다.
a data.frame 명명 된 df1 그리고 열이 있는지 확인합니다 col1 존재 :

if(! any(grepl('^col1$',colnames(df1)))) stop("nonexistent column")

또는

if(! any(grepl('^col1$',colnames(df1)))) return(-1)

예를 들어

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top