web-dev-qa-db-ja.com

コマンドラインからRスクリプトを実行する

私はa.rというファイルを持っています、それは755のchmodを持っています、

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

sayHello()

コマンドラインでこれを実行するにはどうすればいいですか?

409
Sait

出力を端末に印刷したい場合は、Rscriptを使用するのが最善です。

Rscript a.R

R CMD BATCH a.Rを使用すると、出力を標準出力にリダイレクトして端末に表示する代わりに、a.Routという新しいファイルが作成されます。

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

Rscriptの使用に関して注意すべきもう1つのことは、混乱を招く可能性があるデフォルトではmethodsパッケージをロードしないことです。そのため、メソッドが提供するものに依存しているのであれば、スクリプトに明示的にロードすることをお勧めします。

スクリプトを呼び出すのに./a.Rの方法を本当に使いたい場合は、スクリプトの先頭に適切な#!を追加することができます。

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

sayHello()

あなたが* unixシステムを走らせているのであれば、Rへの簡単なコマンドラインパイピングを提供する便利な littler パッケージがあることにも注意します.

589
Dason

これは質問に直接答えません。しかし、誰かが端末からRのonelinerを実行したいので、ここで終わるかもしれません。たとえば、足りないパッケージをインストールして終了したいだけの場合は、このonelinerが非常に便利です。いくつかのパッケージを見逃していることが突然わかったときに、それを頻繁に使います。

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

コマンドラインからRスクリプトを実行するもう1つの方法は、次のとおりです。

R < scriptName.R --no-save  

または--saveと一緒に。

も参照してください。コマンドライン(端末)でRスクリプトを使用するための最良の方法は何ですか?

32
B.Kocis

端末からRスクリプトを実行するには?Rscriptコマンドが必要です。

http://stat.ethz.ch/R-manual/R-devel/library/utils/html/Rscript.html をチェックしてください - /

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

複数のコマンドでknitrとrmarkdownを使用してRmdをコマンドで実行してから、HTMLファイルをRPubsにアップロードする方法

例を示します。2つのライブラリをロードしてRコマンドを実行します。

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

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

ドキュメンテーションのためだけに。スクリプトをSudoとして実行する必要がある場合があります。

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

UnixシステムでRscriptを使うもう1つの方法は、 Process Substitution です。

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

これは明らかに受け入れられた答えと同じことをしますが、これはあなたがそれをコマンドラインの力を節約することなくあなたのファイルを操作して実行することを可能にします。

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

Rscript -e "Rcode"と同様に、ファイルに保存せずに実行することもできます。そのため、Rコードを生成するスクリプトと組み合わせて使用​​することができます。

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