Mam plik o nazwie a.r
, to ma chmod
od 755,
sayHello <- function(){
print('hello')
}
sayHello()
Jak mogę to uruchomić za pomocą wiersza polecenia?
#!/usr/bin/env Rscript
Mam plik o nazwie a.r
, to ma chmod
od 755,
sayHello <- function(){
print('hello')
}
sayHello()
Jak mogę to uruchomić za pomocą wiersza polecenia?
#!/usr/bin/env Rscript
Odpowiedzi:
Jeśli chcesz, aby dane wyjściowe były drukowane na terminalu, najlepiej użyć Rscript
Rscript a.R
Zauważ, że podczas korzystania z R CMD BATCH a.R
tego zamiast przekierowywania wyjścia do standardowego wyjścia i wyświetlania na terminalu zostanie utworzony nowy plik o nazwie a.Rout.
R CMD BATCH a.R
# Check the output
cat a.Rout
Inną rzeczą, na którą należy zwrócić uwagę przy użyciu Rscript, jest to, że methods
domyślnie nie ładuje on pakietu, co może powodować zamieszanie. Więc jeśli polegasz na czymś, co zapewniają metody, będziesz chciał załadować to wprost do skryptu.
Jeśli naprawdę chcesz skorzystać ze ./a.R
sposobu wywoływania skryptu, możesz dodać odpowiedni kod #!
na górze skryptu
#!/usr/bin/env Rscript
sayHello <- function(){
print('hello')
}
sayHello()
Zwrócę też uwagę, że jeśli używasz systemu * unix, istnieje przydatny pakiet Littler , który zapewnia łatwe przesyłanie wiersza poleceń do R. Może być konieczne użycie Littlera do uruchamiania błyszczących aplikacji za pomocą skryptu? Dalsze szczegóły można znaleźć w tym pytaniu .
R CMD BATCH
jest to okropne. Cokolwiek poza tym ...
R CMD INSTALL -l ~/R/lib-dev
To nie odpowiada bezpośrednio na pytanie. Ale ktoś może tu skończyć, ponieważ chce uruchomić oneliner R z terminala. Na przykład, jeśli chcesz po prostu zainstalować brakujące pakiety i wyjść, ten oneliner może być bardzo wygodny. Często go używam, gdy nagle dowiaduję się, że brakuje mi niektórych pakietów i chcę je zainstalować tam, gdzie chcę.
Aby zainstalować w domyślnej lokalizacji:
R -e 'install.packages(c("package1", "package2"))'
Aby zainstalować w lokalizacji wymagającej root
uprawnień:
R -e 'install.packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")'
Rscript -e "getwd()"
w terminalu. Rscript wydrukuje tylko wynik polecenia, a nie pełny komunikat startowy R.
r -e "cat(getwd(),'\n')"
jeśli masz zainstalowany Littler. W tej odpowiedzi Dirk Eddelbuettel wyjaśnia różnicę między littler a Rscript.
R -e 'install.packages("package", repos="http://cran.us.r-project.org")'
R -r 'options(warn=2); install...'
, aby zatrzymać wykonywanie i uzyskać niezerowy kod błędu w przypadku niepowodzenia instalacji. W przeciwnym razie wszelkie install.packages
błędy są tylko ostrzeżeniami.
Jeszcze jednym sposobem uruchomienia skryptu R z wiersza poleceń byłoby:
R < scriptName.R --no-save
lub z --save
.
Zobacz także Jaki jest najlepszy sposób używania skryptów R w wierszu poleceń (terminal)? .
Potrzebujesz ?Rscript
polecenia, aby uruchomić skrypt R z terminala.
Sprawdź 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()
Jak uruchomić Rmd w poleceniu za pomocą knitr i rmarkdown za pomocą wielu poleceń, a następnie Prześlij plik HTML do RPubs
Oto przykład: załaduj dwie biblioteki i uruchom komendę 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")'
Jeszcze innym sposobem korzystania z Rscript dla systemów * Unix jest Process Substitution .
Rscript <(zcat a.r)
# [1] "hello"
Co oczywiście robi to samo, co zaakceptowana odpowiedź, ale pozwala to na manipulowanie i uruchamianie pliku bez zapisywania mocy wiersza poleceń, np .:
Rscript <(sed s/hello/bye/ a.r)
# [1] "bye"
Podobnie do Rscript -e "Rcode"
niego pozwala również na uruchomienie bez zapisywania w 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
Tylko w celu dokumentacji czasami musisz uruchomić skrypt jako sudo
:
sudo Rscript path/to/your/file.R