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?
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.
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.
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)? .
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()
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")'
Juste pour la documentation. Parfois, vous devez exécuter le script en tant que Sudo
:
Sudo Rscript path/to/your/file.R
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