risposta-alla-domanda-sullo-sviluppo-web-bd.com

Esegui lo script R dalla riga di comando

Ho un file, chiamato a.r, ha una chmod di 755,

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

sayHello()

Come posso eseguire questo tramite la riga di comando?

412
Sait

Se vuoi che l'output stampi sul terminale, è meglio usare Rscript

Rscript a.R

Si noti che quando si utilizza R CMD BATCH a.R che invece di reindirizzare l'output a standard out e di visualizzare sul terminale, verrà creato un nuovo file chiamato a.Rout.

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

Un'altra cosa da notare sull'uso di Rscript è che non carica il pacchetto methods di default che può causare confusione. Quindi, se ti affidi a tutto ciò che i metodi ti offrono, vorrai caricarlo esplicitamente nel tuo script.

Se vuoi veramente usare il modo ./a.R di chiamare lo script puoi aggiungere un #! appropriato all'inizio dello script

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

sayHello()

Noterò anche che se stai usando un sistema * unix, c'è il pacchetto utile littler che fornisce una semplice pipeline da riga di comando a R.

593
Dason

Questo non risponde direttamente alla domanda. Ma qualcuno potrebbe finire qui perché vogliono eseguire un oneliner di R dal terminale. Ad esempio, se vuoi semplicemente installare alcuni pacchetti mancanti e uscire, questo oneliner può essere molto conveniente. Lo uso molto quando all'improvviso scopro che mi mancano alcuni pacchetti e voglio installarli dove voglio.

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. 
87
biocyberman

Un altro modo di eseguire uno script R dalla riga di comando sarebbe:

R < scriptName.R --no-save  

o con --save.

Vedi anche Qual è il modo migliore di usare gli script R sulla riga di comando (terminale)? .

33
B.Kocis

È necessario il comando ?Rscript per eseguire uno script R dal terminale.

Check out http://stat.ethz.ch/R-manual/R-devel/library/utils/html/Rscript.html

Esempio

## 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()
18
Mehul Rathod

Come eseguire Rmd in comando con knitr e rmarkdown con più comandi e quindi caricare un file HTML in RPubs

Ecco un esempio: carica due librerie ed esegui un comando R

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

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

Solo per documentazione. Qualcuno ha bisogno di eseguire lo scrip come Sudo:

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

Un altro modo di usare Rscript per sistemi * Unix è Process Substitution .

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

Che ovviamente equivale alla risposta accettata, ma questo ti consente di manipolare ed eseguire il tuo file senza salvarlo dalla potenza della riga di comando, ad esempio:

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

Simile a Rscript -e "Rcode" consente anche di eseguire senza salvare in un file. Quindi potrebbe essere usato in combinazione con script che generano codice R, ad esempio:

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
2