2010-12-29 8 views
16

Soy un novato. Tengo un archivo R que contiene una función con un parámetro. me gustaría poder realizar las dos siguientes operaciones distintas:Ejecución y depuración de un script y función en R

  1. Ejecutar la función
  2. ejecutar el paso a paso y depurarlo

supone que tienen una función simple en un archivo de R

"exampleSum"<- 
function(x,y){ 
x<-x+1 
return(x+y) 
} 

¿Podría decirme cuáles son los comandos R para realizar lo que solicité?

+0

No olvide leer las páginas de ayuda de '? Debug' y'? Browser' con mucho cuidado. –

Respuesta

1

Primero debe cargar la función en el espacio de trabajo de R (copiándola/pegándola en R). Luego, puede ejecutarlo usando exampleSum(x = 1, y = 1). Puede verificar que está allí escribiendo exampleSum en la consola R. También puede ejecutar el archivo de script utilizando source(). El ejemplo de uso sería source("d:/R/my_script.R").

Creo que se beneficiaría enormemente al leer al menos An Introduction to R. También hay una gran cantidad de libros disponibles para principiantes R que explican los conceptos básicos. La información equivalente está disponible en el AI2R antes mencionado y los materiales gratuitos que flotan en Internet. La búsqueda en la lista R help también es ... útil.

25

Tiene que llamar al debug(<functionName>) para recorrer una función. La próxima vez que llame a la función, el denominado entorno de navegador se abrirá automáticamente y mostrará el contenido de su función. Realice un paso presionando Volver o con el comando n (siguiente). Un solo paso es un bloque (generalmente una sola línea) que se listará antes de ejecutarse. Para ejecutar la función hasta su final, presione c (continuar). Cuando está en el modo de navegador, puede usar ls(), str(), class(), ... para inspeccionar los objetos. Su ejemplo es el siguiente:

> exampleSum <- function(x, y) { 
+ x <- x+1 
+ return(x+y) 
+ } 

> debug(exampleSum)    # set debug flag 
> exampleSum(1, 2)    # run function in browser mode 
debugging in: exampleSum(1, 2) 
debug: { 
    x <- x + 1 
    return(x + y) 
} 
Browse[2]> n     # next step 
debug: x <- x + 1 
Browse[2]> ls()     # show objects 
[1] "x" "y" 
Browse[2]> x     # show x 
[1] 1 
Browse[2]> c     # run function to end 
exiting from: exampleSum(1, 2) 
[1] 4 

> undebug(exampleSum)   # remove debug flag 

La última llamada a undebug(<functionName>) elimina el indicador de depuración de la función tal que se llevará a cabo normalmente la próxima vez que se llama.

+8

'debugonce' también es útil cuando solo necesita una verificación de una sola vez. – Marek

+3

¿y si quieres ejecutar las siguientes 100 líneas? – qed

Cuestiones relacionadas