Utilice la función tryCatch para el manejo de condiciones en R

Jinku Hu 16 julio 2021
Utilice la función tryCatch para el manejo de condiciones en R

Este artículo demostrará varios métodos de uso de la función tryCatch para el manejo de condiciones en R.

Utilice tryCatch para manejar condiciones de error en R

Se proporcionan tres tipos de condiciones integradas en lenguaje R, que se pueden lanzar como excepciones del código. Convencionalmente, los más graves se denominan errores, que suelen terminar la función o se detiene la ejecución. Luego, hay advertencias, que indican si ocurre algún error durante la ejecución de la función, pero es capaz de manejar el problema parcialmente. Finalmente, tenemos mensajes que se utilizan para informar sobre algunos problemas leves al usuario. Estas tres condiciones tienen funciones correspondientes denominadas stop, warning y message, que pueden invocarse para generar la condición dada.

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

f1(10)

Producción :

log( 10 ) = [1] 2.302585

Por ejemplo, el código anterior define una función llamada f1 que toma un solo argumento x e imprime el resultado log(x) con algún formato adicional. Observe que si el usuario pasa un argumento no numérico a la función f1, arroja un error. Podemos manejar este error registrando el controlador con la función tryCatch.

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

f1("f")

Producción :

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

Tenga en cuenta que registrar el controlador significa que anulamos el código predeterminado para este error con el proporcionado por el usuario. El siguiente ejemplo demuestra cómo el mensaje de error predeterminado se reemplaza con la cadena de salida personalizada. Mientras tanto, la siguiente función se comporta normalmente si no se genera la condición de error.

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

f1("f")

Producción :

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

El uso común de la función tryCatch es implementar un bloque de código que debe ejecutarse cuando se produce la condición de error. Especificamos el bloque de código que se ejecuta cuando se genera un error entre las llaves después de la línea error = function(cnd). Las siguientes líneas después del bloque de código de error generalmente se ejecutan cuando el controlador está activo.

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

f1("x")

Producción :

[1] "hello"
[1] 2.302585
Autor: 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