source script run how from code batch r batch-file cmd cron rscript

run - ¿Por qué(o cuándo) es Rscript(o más pequeño) mejor que R CMD BATCH?



run r script from command line windows (2)

Estoy automatizando algunos webscraping con R en cron y algunas veces uso R CMD BATCH y algunas veces uso Rscript .

Para decidir cuál usar, me enfoco principalmente si quiero el archivo .Rout o no.

Pero al leer las respuestas a algunas preguntas aquí en SO (como this o this ) parece que Rscript es preferible a R CMD BATCH .

Entonces mis preguntas son:

  • Además del hecho de que la sintaxis es un poco diferente y R CMD BATCH guarda un archivo .Rout mientras que Rscript no, ¿cuáles son las principales diferencias entre los dos?

  • ¿Cuándo debería preferir uno sobre otro? Más específicamente, en el trabajo cron mencionado anteriormente, ¿se prefiere uno de ellos?

  • Todavía no he usado littler , ¿cómo es diferente de Rscript y R CMD BATCH ?


Por lo que entiendo:

R CMD LOTE:

  • repetir las declaraciones de entrada
  • no puede salir a stdout

Rscript:

  • NO hace eco
  • salida a stdout
  • se puede utilizar en un solo liner (es decir, sin archivo de entrada)

más pequeño:

  • todo lo que Rscript hace
  • puede leer comandos desde stdin (útil para canalización)
  • tiempo de arranque más rápido
  • cargar el paquete de métodos

En la práctica, uso Rscript para ejecutar scripts, en línea de comandos o en crons.


R CMD BATCH es todo lo que teníamos hace años. Hace que i / o sea muy difícil y deja archivos atrás.

Las cosas mejoraron, primero con Littler y luego también con Rscript. Ambos se pueden usar para líneas ''shebang'' como

#!/usr/bin/r #!/usr/bin/Rscript

y ambos se pueden usar con paquetes como getopt y optparse --- permitiéndole escribir scripts R adecuados que pueden actuar como comandos. Si tengo docenas de ellas, comenzando con simples como esta que puedo llamar como install.r pkga pkgb pkgc y que instalará las tres y sus dependencias) para mí desde la línea de comandos sin acaparar el prompt R:

#!/usr/bin/env r # # a simple example to install one or more packages if (is.null(argv) | length(argv)<1) { cat("Usage: installr.r pkg1 [pkg2 pkg3 ...]/n") q() } ## adjust as necessary, see help(''download.packages'') repos <- "http://cran.rstudio.com" ## this makes sense on Debian where no packages touch /usr/local lib.loc <- "/usr/local/lib/R/site-library" install.packages(argv, lib.loc, repos)

Y al igual que Karl, tengo cronjobs llamando a scripts R similares.

Edit on 2015-11-04: A partir de la semana pasada, littler ahora también está en CRAN .