Lancer le script R à 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 exécuter ceci via la ligne de commande?

364
demandé sur epo3 2013-08-19 08:23:21

7 réponses

si vous voulez que la sortie soit imprimée sur le terminal, il est préférable d'utiliser Rscript

Rscript a.R

notez que lors de l'utilisation de R CMD BATCH a.R qu'au lieu de rediriger la sortie vers standard out et d'afficher sur le terminal un nouveau fichier appelé a. La déroute sera créée.

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

Si vous voulez vraiment utiliser le ./a.R de l'appel du script vous pouvez ajouter un #! en haut du script

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

sayHello()

je vais aussi noter que si vous utilisez un système * unix, il y a l'utile littler paquet qui fournit la tuyauterie de ligne de commande facile à R.

524
répondu Dason 2017-03-22 13:53:14

cela ne répond pas directement à la question. Mais quelqu'un peut finir ici parce qu'il veut lancer un oneliner de R depuis le terminal. Par exemple, si vous voulez juste pour installer certains paquets manquants et quitter ce oneliner peut être très pratique. Je l'utilise beaucoup quand je découvre soudainement que certains paquets me manquent, et je veux les installer où je veux.

R -e 'install.packages(c("package1", "package2"))' # install to default location. 
sudo R -e 'install.packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")' # install to location that requires root. 
68
répondu biocyberman 2018-03-14 21:25:37

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 les scripts R sur la ligne de commande (terminal)? .

28
répondu ab-user 2018-03-17 10:52:30

vous avez besoin de la commande ?Rscript pour exécuter un script R depuis le terminal.

Check out 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()
16
répondu Mehul Rathod 2013-08-19 04:40:00

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

voici un exemple: chargez deux bibliothèques et lancez une commande R

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

R -e 'library("markdown");rpubsUpload("normalDev","NormalDevconJuly.html")'
8
répondu Shicheng Guo 2016-07-11 18:58:31

juste pour la documentation. Parfois, vous devez exécuter la prescription comme sudo :

sudo Rscript path/to/your/file.R
1
répondu Cro-Magnon 2018-06-15 21:57:51

une autre façon D'utiliser Rscript pour les systèmes Unix est substitution de processus .

Rscript <(zcat a.r)
# [1] "hello"

qui fait évidemment la même chose que la réponse acceptée, mais cela vous permet de manipuler et d'exécuter votre fichier sans l'enregistrer la puissance de la ligne de commande, par exemple:

Rscript <(sed s/hello/bye/ a.r)
# [1] "bye"

similaire à Rscript -e "Rcode" il permet également d'exécuter sans enregistrer dans un fichier. Il peut donc être utilisé en conjonction avec des scripts qui génèrent Code R, p.ex.:

Rscript <(echo "head(iris,2)")
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1          5.1         3.5          1.4         0.2  setosa
# 2          4.9         3.0          1.4         0.2  setosa
0
répondu Sebastian Müller 2017-09-09 10:37:29