R에서 조건 처리를 위해 tryCatch 함수 사용

Jinku Hu 2021년7월16일
R에서 조건 처리를 위해 tryCatch 함수 사용

이 기사에서는 R에서 조건 처리를 위해tryCatch함수를 사용하는 여러 방법을 보여줍니다.

tryCatch를 사용하여 R의 오류 조건 처리

세 가지 유형의 기본 제공 조건이 R 언어로 제공되며 코드에서 예외로 throw 될 수 있습니다. 일반적으로 가장 심각한 오류는 오류라고하며 일반적으로 기능을 종료하거나 실행이 중지됩니다. 그런 다음 함수 실행 중에 오류가 발생하는지 여부를 나타내는 경고가 있지만 문제를 부분적으로 처리 할 수 ​​있습니다. 마지막으로 사용자에게 가벼운 문제를 알리는 데 사용되는 메시지가 있습니다. 이 세 가지 조건에는stop,warningmessage라는 이름의 해당 함수가 있으며, 이는 주어진 조건을 발생시키기 위해 호출 할 수 있습니다.

f1 <- function(x) {
  cat("log(", x, ") = ", (log(x)))
}

f1(10)

출력:

log( 10 ) = [1] 2.302585

예를 들어, 이전 코드는 단일 인수x를 취하고 일부 추가 형식화와 함께log(x)결과를 인쇄하는f1이라는 함수를 정의합니다. 사용자가f1함수에 숫자가 아닌 인수를 전달하면 오류가 발생합니다. tryCatch함수로 핸들러를 등록하여이 오류를 처리 할 수 ​​있습니다.

f1 <- function(x) {
  cat("log(", x, ") = ", (log(x)))
}

f1("f")

출력:

Error in log(x) : non-numeric argument to mathematical function

핸들러를 등록한다는 것은이 오류에 대한 기본 코드를 사용자가 제공 한 코드로 재정의한다는 것을 의미합니다. 다음 예제는 기본 오류 메시지가 사용자 정의 출력 문자열로 대체되는 방법을 보여줍니다. 한편, 오류 조건이 발생하지 않으면 다음 함수는 정상적으로 동작합니다.

f1 <- function(x) {
  tryCatch(
    error = function(cnd) "The custom output that we need to print",
    cat("log(", x, ") = ", (log(x)))
  )
}

f1("f")

출력:

[1] "The custom output that we need to print"

tryCatch함수의 일반적인 사용법은 오류 조건이 발생했을 때 실행해야하는 코드 블록을 구현하는 것입니다. error = function(cnd)라인 뒤 중괄호 안에 오류가 발생했을 때 실행되는 코드 블록을 지정합니다. 오류 코드 블록 뒤의 다음 줄은 일반적으로 핸들러가 활성 상태 일 때 실행됩니다.

f1 <- function(x) {
  tryCatch(
    error = function(cnd) {
      print("hello")
      log(10)
    },
    cat("log(", x, ") = ", (log(x)))
  )
}

f1("x")

출력:

[1] "hello"
[1] 2.302585
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook