(+1) @caracal, de alguna manera se perdió esa opción :) no es necesario ponerla printen el archivo fuente, a menos que alguna salida no sea interesante.
Dmitrij Celov
Respuestas:
16
Puede usar el depurador incorporado de R; debe activarse en una función, por lo que se necesita un pequeño contenedor:
sourceDebugging<-function(f){#Function to inject the code to
theCode<-function(){}#Injection
parse(text=c('{',readLines(f),'}'))->body(theCode)#Triggering debug
debug(theCode)#Lift-off
theCode()}
sourceDebugging(<file with code>)
Esto es bastante útil para la depuración (le da la oportunidad de inspeccionar el estado después de cada línea), sin embargo, solo evaluará en un entorno nuevo en theCodelugar del sourcepredeterminado .GlobalEnv... esto significa, por ejemplo, que las variables hechas dentro desaparecerán a menos que explícitamente globalizado.
La opción dos es simplemente emular la escritura desde el teclado y presionar ENTER ... pero, como señaló Caracal, esto se puede lograr simplemente con source(<file with code>,echo=TRUE).
(+1) también es recomendable escribir los archivos de origen como funciones y luego debug()browser()son útiles :)
Dmitrij Celov
1
también vainilla, muestra cómo un comando ejecuta línea por línea R-2.12 --vanilla <yourfile.R
user4581
1
¿Algún método para pasar también parámetros?
gc5
Parece que los números están compensados por 1 debido a la definición de la función. ¿Hay alguna forma inteligente de evitar eso?
irritable_phd_syndrom
10
Abra el archivo de script dentro de su RGui y presione Ctrl + R para ejecutar línea por línea (sin embargo, debe presionar muchas veces;)). Sin embargo, recomendaría usar RStudio para el trabajo conveniente con R. En este caso, ejecute la línea con Ctrl + Enter . O puede modificar su script a print()(o cat()) los objetos.
source("arrFile.R", echo=TRUE)
?print
en el archivo fuente, a menos que alguna salida no sea interesante.Respuestas:
Puede usar el depurador incorporado de R; debe activarse en una función, por lo que se necesita un pequeño contenedor:
Esto es bastante útil para la depuración (le da la oportunidad de inspeccionar el estado después de cada línea), sin embargo, solo evaluará en un entorno nuevo en
theCode
lugar delsource
predeterminado.GlobalEnv
... esto significa, por ejemplo, que las variables hechas dentro desaparecerán a menos que explícitamente globalizado.La opción dos es simplemente emular la escritura desde el teclado y presionar ENTER ... pero, como señaló Caracal, esto se puede lograr simplemente con
source(<file with code>,echo=TRUE)
.fuente
debug()
browser()
son útiles :)Abra el archivo de script dentro de su RGui y presione Ctrl + R para ejecutar línea por línea (sin embargo, debe presionar muchas veces;)). Sin embargo, recomendaría usar RStudio para el trabajo conveniente con R. En este caso, ejecute la línea con Ctrl + Enter . O puede modificar su script a
print()
(ocat()
) los objetos.fuente