J'ai un fichier, appelé a.r
, il a un chmod
755,
sayHello <- function(){
print('hello')
}
sayHello()
Comment puis-je l'exécuter via la ligne de commande?
#!/usr/bin/env Rscript
J'ai un fichier, appelé a.r
, il a un chmod
755,
sayHello <- function(){
print('hello')
}
sayHello()
Comment puis-je l'exécuter via la ligne de commande?
#!/usr/bin/env Rscript
Réponses:
Si vous souhaitez que la sortie s'imprime sur le terminal, il est préférable d'utiliser Rscript
Rscript a.R
Notez que lorsque vous utilisez R CMD BATCH a.R
cela 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 methods
package par défaut, ce qui peut prêter à confusion. Donc, si vous comptez sur tout ce que les méthodes fournissent, vous voudrez le charger explicitement dans votre script.
Si vous voulez vraiment utiliser la ./a.R
façon d'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 le package littler utile qui fournit une canalisation de ligne de commande facile à 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 .
R CMD BATCH
terrible. Tout sauf ça ...
R CMD INSTALL -l ~/R/lib-dev
Cela ne répond pas directement à la question. Mais quelqu'un peut se retrouver ici parce qu'il veut exécuter une seule ligne de R à partir du terminal. Par exemple, si vous voulez simplement installer des paquets manquants et quitter, cet oneliner peut être très pratique. Je l'utilise beaucoup lorsque je découvre soudainement que certains packages me manquent et que je veux les installer où je veux.
Pour installer à l'emplacement par défaut:
R -e 'install.packages(c("package1", "package2"))'
Pour installer à un emplacement qui nécessite des root
privilèges:
R -e 'install.packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")'
Rscript -e "getwd()"
dans le terminal. Rscript imprime uniquement la sortie de la commande et non le message de démarrage R complet.
r -e "cat(getwd(),'\n')"
si vous avez installé littler. Dans cette réponse, Dirk Eddelbuettel explique la différence entre littler et Rscript.
R -e 'install.packages("package", repos="http://cran.us.r-project.org")'
R -r 'options(warn=2); install...'
pour arrêter l'exécution et obtenir un code d'erreur non nul en cas d'échec de l'installation. Sinon, les install.packages
erreurs ne sont que des avertissements.
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)? .
Vous avez besoin de la ?Rscript
commande pour exécuter un script R à partir du terminal.
Consultez 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 la commande avec knitr et rmarkdown par plusieurs commandes, puis télécharger un fichier HTML sur 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")'
R -e 'markdown::rpubsUpload("normalDev","NormalDevconJuly.html")'
Une autre façon d'utiliser Rscript pour les systèmes * Unix est la substitution de processus .
Rscript <(zcat a.r)
# [1] "hello"
Ce 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 lui faire économiser la puissance de la ligne de commande, par exemple:
Rscript <(sed s/hello/bye/ a.r)
# [1] "bye"
Similaire à Rscript -e "Rcode"
cela permet également d'exécuter sans enregistrer dans un fichier. Il pourrait donc être utilisé en conjonction 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
Juste pour la documentation, vous devez parfois exécuter le script en tant que sudo
:
sudo Rscript path/to/your/file.R