Ejecutar un script R línea por línea

8

Acabo de descubrir cómo ejecutar un script R desde la consola R en Windows.

source("arrrFile.R")

El problema es que este comando se ejecuta "en silencio". ¿Cómo puedo ejecutar el archivo comando por comando como lo escribiría en la consola?

Fabian
fuente
55
¿Lo has intentado source("arrFile.R", echo=TRUE)?
caracal
(+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).


fuente
(+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.

Dmitrij Celov
fuente