596 votes

Exécuter R script à partir de la ligne de commande

J'ai un fichier, appelé a.r il a un chmod de 755,

sayHello <- function(){
   print('hello')
}

sayHello()

Comment puis-je l'exécuter en ligne de commande ?

3 votes

7 votes

Tl;dr : ajoutez simplement comme première ligne de votre script : #!/usr/bin/env Rscript

789voto

Dason Points 18263

Si vous voulez que la sortie s'imprime dans le terminal, il est préférable d'utiliser Rscript.

Rscript a.R

Notez que lorsque vous utilisez R CMD BATCH a.R qu'au lieu de rediriger la sortie vers standard out et de l'afficher sur le terminal, un nouveau fichier appelé a.Rout sera créé.

R CMD BATCH a.R
# Check the output
cat a.Rout

Une autre chose à noter à propos de l'utilisation de Rscript est qu'il ne charge pas l'application methods par défaut, ce qui peut prêter à confusion. Donc si vous comptez sur quelque chose que les méthodes fournissent, vous voudrez le charger explicitement dans votre script.

Si vous voulez vraiment utiliser le ./a.R manière d'appeler le script, vous pourriez ajouter une fonction appropriée #! au début du script.

#!/usr/bin/env Rscript
sayHello <- function(){
   print('hello')
}

sayHello()

Je noterai également que si vous travaillez sur un système *unix, vous pouvez utiliser l'utile plus petit qui fournit un pipeline de ligne de commande facile pour R. Il peut être nécessaire d'utiliser littler pour exécuter des applications brillantes via un script ? Plus de détails peuvent être trouvés dans cette question .

31 votes

Sans le # ! votre ligne de commande essaie de l'exécuter comme une ligne de commande script, en utilisant le même interpréteur qui interprète vos commandes. Elle ne sait pas que c'est censé être R, même si le fichier se termine par un suffixe .R ou .r. Le # ! indique à la ligne de commande quelle langue est contenue dans le fichier.

151voto

biocyberman Points 311

Cela ne répond pas directement à la question. Mais quelqu'un peut se retrouver ici parce qu'il veut exécuter un oneliner de R depuis le terminal. Par exemple, si vous voulez juste installer quelques paquets manquants et quitter, cet oneliner peut être très pratique. Je l'utilise souvent lorsque je découvre soudainement qu'il me manque certains paquets et que je veux les installer là où je le souhaite.

  • Pour installer à l'emplacement par défaut :

    R -e 'install.packages(c("package1", "package2"))'
  • Pour installer à un endroit qui nécessite root les privilèges :

    R -e 'install.packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")'

55voto

ab-user216125 Points 38

Une autre façon d'exécuter un script R à partir de la ligne de commande serait :

R < scriptName.R --no-save  

ou avec --save .

Voir aussi Quelle est la meilleure façon d'utiliser R scripts sur la ligne de commande (terminal) ? .

23voto

Mehul Rathod Points 780

Vous avez besoin de la ?Rscript pour exécuter un script R à partir du terminal.

Vérifiez http://stat.ethz.ch/R-manual/R-devel/library/utils/html/Rscript.html

Exemple

## example #! script for a Unix-alike

#! /path/to/Rscript --vanilla --default-packages=utils
args <- commandArgs(TRUE)
res <- try(install.packages(args))
if(inherits(res, "try-error")) q(status=1) else q()

12voto

Shicheng Guo Points 623

Comment exécuter Rmd en commande avec knitr et rmarkdown par des commandes multiples et ensuite télécharger un fichier HTML vers RPubs

Voici un exemple : charger deux bibliothèques et exécuter une commande R

R -e 'library("rmarkdown");library("knitr");rmarkdown::render("NormalDevconJuly.Rmd")'

R -e 'library("markdown");rpubsUpload("normalDev","NormalDevconJuly.html")'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X