J'automatise du webscraping avec R
dans cron
et parfois j'utilise R CMD BATCH
et parfois j'utilise Rscript
.
Pour décider lequel utiliser, je me concentre principalement si je veux le .Rout
fichier ou non.
Mais en lisant les réponses à certaines questions ici dans SO (comme this ou this ) il semble que Rscript
soit préféré à R CMD BATCH
.
Mes questions sont donc:
Outre le fait que la syntaxe est un peu différente et R CMD BATCH
enregistre un .Rout
fichier alors que Rscript
ne fonctionne pas, quelles sont les principales différences entre les deux?
Quand devrais-je préférer l'un à l'autre? Plus précisément, dans le travail cron
mentionné ci-dessus, l'un d'eux est-il préféré?
Je n'ai pas encore utilisé littler
, en quoi est-ce différent de Rscript
et R CMD BATCH
?
R CMD BATCH
est tout ce que nous avions il y a des années. Cela rend les E/S très difficiles et laisse les fichiers derrière.
Les choses se sont améliorées, d'abord avec littler puis aussi avec Rscript. Les deux peuvent être utilisés pour les lignes "Shebang" telles que
#!/usr/bin/r
#!/usr/bin/Rscript
et les deux peuvent être utilisés avec des packages comme getopt et optparse --- vous permettant d'écrire des scripts R appropriés qui peuvent agir comme des commandes. Si vous en avez des dizaines, à commencer par des simples comme celui-ci que je peux appeler comme install.r pkga pkgb pkgc
et qui va installer les trois et leurs dépendances) pour moi à partir de la ligne de commande sans monopoliser l'invite 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)
Et tout comme Karl, j'ai des tâches cron appelant des scripts R similaires.
Modifier le 04/11/2015: Depuis la semaine dernière, littler est désormais également sur CRAN .
D'après ce que je comprends:
LOT R CMD:
Rscript:
littler:
En pratique, j'utilise Rscript pour exécuter des scripts, en ligne de commande ou en crons.