Uruchom skrypt R z wiersza poleceń

Mam plik o nazwie a.r, mA chmod z 755,

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

sayHello()

Jak mogę uruchomić to za pomocą wiersza poleceń?

Author: epo3, 2013-08-19

7 answers

Jeśli chcesz wydrukować wyjście do terminala, najlepiej użyć Rscript

Rscript a.R

Zauważ, że podczas używania R CMD BATCH a.R zamiast przekierowywania wyjścia do standardowego wyjścia i wyświetlania na terminalu zostanie utworzony nowy plik o nazwie.Rout.

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

Jeśli naprawdę chcesz użyć ./a.R sposób wywołania skryptu można dodać odpowiednie #! na górze skryptu

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

sayHello()

Zwrócę również uwagę, że jeśli działasz na systemie * unix, jest przydatny littler pakiet, który zapewnia łatwe przesyłanie wiersza poleceń do R.

 524
Author: Dason,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-22 13:53:14

To nie odpowiada bezpośrednio na pytanie. Ale ktoś może skończyć tutaj, bo chce uruchomić jedną z R z terminala. Na przykład, jeśli po prostu chcesz zainstalować kilka brakujących pakietów i zamknąć, ten oneliner może być bardzo wygodny. Używam go często, gdy nagle dowiaduję się, że brakuje mi niektórych pakietów i chcę je zainstalować tam, gdzie chcę.

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
Author: biocyberman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-14 21:25:37

Jeszcze jeden sposób uruchomienia skryptu R z linii poleceń to:

R < scriptName.R --no-save  

Lub z --save.

Zobacz także jaki jest najlepszy sposób użycia skryptów R w wierszu poleceń (terminal)?.

 28
Author: ab-user,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-17 10:52:30

Do uruchomienia skryptu R z terminala potrzebne jest polecenie ?Rscript.

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

Przykład

## 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
Author: Mehul Rathod,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-19 04:40:00

Jak uruchomić RMD w Komendzie z knitr i rmarkdown za pomocą wielu komend, a następnie przesłać plik HTML do RPubs

Oto przykład: załaduj dwie biblioteki i uruchom polecenie R

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

R -e 'library("markdown");rpubsUpload("normalDev","NormalDevconJuly.html")'
 8
Author: Shicheng Guo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-11 18:58:31

Tylko dla dokumentacji. Niektóre rzeczy musisz uruchomić skrypt jako sudo:

sudo Rscript path/to/your/file.R
 1
Author: Cro-Magnon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-15 21:57:51

Innym sposobem użycia Rscriptu w systemach * Unix jest zastępowanie procesów .

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

Co oczywiście robi to samo co akceptowana odpowiedź, ale pozwala to na manipulowanie i uruchamianie pliku bez zapisywania mocy linii poleceń, np.:

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

Podobnie jak Rscript -e "Rcode" pozwala również na uruchamianie bez zapisywania do pliku. Można go więc używać w połączeniu ze skryptami generującymi Kod R, np.:

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
Author: Sebastian Müller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-09 10:37:29