web-dev-qa-db-fra.com

Exécuter le script R en 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 via une ligne de commande?

426
Sait

Si vous voulez que la sortie soit imprimée sur le terminal, mieux vaut utiliser Rscript

Rscript a.R

Notez que lorsque vous utilisez R CMD BATCH a.R, au lieu de rediriger la sortie vers la sortie standard et d'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 le package methods par défaut, ce qui peut prêter à confusion. Donc, si vous utilisez tout ce que fournissent les méthodes, vous voudrez le charger explicitement dans votre script.

Si vous voulez vraiment utiliser la méthode ./a.R pour appeler le script, vous pouvez ajouter un #! approprié en haut du script.

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

sayHello()

Je noterai également que si vous utilisez un système * unix, il existe un paquetage utile littler qui fournit une tuyauterie en ligne de commande facile vers R.

610
Dason

Cela ne répond pas directement à la question. Mais il est possible que quelqu'un se retrouve ici car il souhaite exécuter un seul élément de type R à partir du terminal. Par exemple, si vous voulez juste installer des paquets manquants et quitter, cet outil peut être très pratique. Je l'utilise souvent lorsque je découvre soudainement que certains paquets me manquent et que 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. 
92
biocyberman

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 Quel est le meilleur moyen d'utiliser des scripts R sur la ligne de commande (terminal)? .

34
B.Kocis

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

Départ 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()
20
Mehul Rathod

Comment exécuter Rmd dans une commande avec knitr et rmarkdown avec plusieurs commandes, puis télécharger un fichier HTML dans RPubs

Voici un exemple: chargez deux bibliothèques et exécutez une commande R

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

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

Juste pour la documentation. Parfois, vous devez exécuter le script en tant que Sudo:

Sudo Rscript path/to/your/file.R
3
Cro-Magnon

Une autre façon d’utiliser Rscript pour les systèmes * Unix est Process Substitution .

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

Ce qui, évidemment, fait la même chose que la réponse acceptée, mais cela vous permet de manipuler et d’exécuter votre fichier sans lui attribuer 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 de s'exécuter sans sauvegarder dans un fichier. Donc, il pourrait être utilisé avec des scripts qui génèrent du code R, par exemple:

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
3
Sebastian Müller