Depuración en Programación R

La depuración es un proceso de limpieza de un código de programa de errores para ejecutarlo con éxito. Al escribir códigos, algunos errores o problemas aparecen automáticamente después de la compilación del código y son más difíciles de diagnosticar. Por lo tanto, arreglarlo lleva mucho tiempo y después de múltiples niveles de llamadas.

La depuración en R se realiza a través de advertencias, mensajes y errores. Depurar en R significa depurar funciones. Varias funciones de depuración son:

  • Punto de interrupción del editor
  • rastrear()
  • navegador()
  • recuperar()

Puntos de interrupción del editor

Los puntos de interrupción del editor se pueden agregar en RStudio haciendo clic a la izquierda de la línea en RStudio o presionando Shift+F9 con el cursor en su línea. Un punto de interrupción es lo mismo que browser() pero no implica cambiar códigos. Los puntos de interrupción se indican con un círculo rojo en el lado izquierdo, lo que indica que se ingresará al modo de depuración en esta línea después de que se ejecute la fuente.

función rastrear()

La traceback()función se usa para brindar toda la información sobre cómo su función llegó a un error. Mostrará todas las funciones llamadas antes de que llegara el error llamado » pila de llamadas » en muchos idiomas, R favorece llamar al rastreo.

Ejemplo:

# Function 1
function_1 <- function(a){
 a + 5
}
  
# Function 2
function_2 <- function(b) {
 function_1(b)
}
  
# Calling function
function_2("s")
  
# Call traceback()
traceback()

Producción:

2: function_1(b) at #1
1: function_2("s")

traceback()La función muestra el error durante las evaluaciones. La pila de llamadas se lee desde la función que se ejecutó (en la parte inferior) hasta la función que se estaba ejecutando (en la parte superior). También podemos usarlo traceback()como un controlador de errores que mostrará el error inmediatamente sin llamar al rastreo.

# Function 1
function_1 <- function(a){
 a + 5
}
  
# Function 2
function_2 <- function(b){
 function_1(b)
}
  
# Calling error handler
options(error = traceback)
function_2("s")

Producción:

Error in a + 5 : non-numeric argument to binary operator
2: function_1(b) at #1
1: function_2("s")

función navegador()

La función browser() se inserta en las funciones para abrir el depurador interactivo de R. Detendrá la ejecución de function() y podrá examinar la función con su propio entorno. En el modo de depuración, podemos modificar objetos, mirar los objetos en el entorno actual y también continuar ejecutando.

Ejemplo:

El comando browser[1]> en consolas confirma que está en modo de depuración. Algunos comandos a seguir:

  • ls(): Objetos disponibles en el entorno actual.
  • print(): Para evaluar objetos.
  • n: Para examinar la siguiente declaración.
  • s: Para examinar la siguiente declaración entrando en llamadas a funciones.
  • donde: Para imprimir un seguimiento de pila.
  • c: Para salir del depurador y continuar con la ejecución.
  • C: para salir del depurador y volver al indicador R.

Además, debug()la declaración inserta automáticamente browser()la declaración al comienzo de la función.

función de recuperación()

recover()La declaración se usa como un controlador de errores y no como la declaración directa. En recover(), R imprime toda la pila de llamadas y le permite seleccionar a qué navegador de funciones le gustaría ingresar. Luego, la sesión de depuración comienza en la ubicación seleccionada.

Ejemplo:

# Calling recover
options(error = recover)
  
# Function 1
function_1 <- function(a){
 a + 5
}
  
# Function 2
function_2 <- function(b) {
 function_1(b)
}
  
# Calling function
function_2("s")

Producción:

Enter a frame number, or 0 to exit   

1: function_2("s")
2: #2: function_1(b)

Selection: 

La sesión de depuración comienza en la ubicación seleccionada.

Publicación traducida automáticamente

Artículo escrito por dhruv5819 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *