アメリエフのブログ

Amelieff Staff Blog

Rスクリプトの使い方

長いコマンドを打つときや、
同じようなコマンドを繰り返し実行するときは、
ファイルに書いておいたコマンドーースクリプトを利用すると便利です。

Rのスクリプトファイルの拡張子は、慣習的に .R.r が使われます。 筆者は.R派です。

スクリプトの使い方は、よく使うのは2通りです。

  • R上でスクリプトを読み込む
  • コマンドラインでRスクリプトを実行する

例として、以下のhatena.R を実行してみます。
"hatena.R"

a <- sqrt(2)
print(a)

R上でスクリプトを読み込む

source() 関数を使用します。
読み込むと同時に、スクリプトに書かれた内容が実行されます。

メモ帳に書いておいたコマンドを、全部コピーしてRコンソールにペーストする作業に近いでしょうか。 それをスマートにやってくれる関数です。

> source("hatena.R")  
[1] 1.414214  

スクリプトファイルが作業ディレクトリ内になくても、パス(置き場所)を指定して読み込むこともできます。

> source("~/script/hatena.R")  
[1] 1.414214  

インターネット上のファイルも指定して読み込むことができます。
例えば、
Bioconductor(ver3.7 まで)のパッケージをインストールしたいときは、下のコマンドを実行して、 スクリプト内部で定義されたbiocLite関数を使えるようにします。

> source("https://bioconductor.org/biocLite.R")

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

シェルのRscript コマンドで、Rスクリプトを実行します。
(紛らわしいですが、本記事では 英語でRscriptはシェルのコマンド、カタカナでスクリプトはスクリプトファイルのことです)

$ Rscript hatena.R  
[1] 1.414214  

スクリプト内で、引数を受け取れるようにしておけば、Rscript コマンドの引数(第2引数以降)をRのスクリプトで使用できます。

"hatena2.R"

args <- commandArgs(trailingOnly=TRUE) #引数受け取り
a <- as.integer(args[1]) #数値に変換
b <- as.integer(args[2])
c <- sqrt(a + b)
c

$ Rscript hatena2.R 99 1
[1] 10

第2引数以降の 991 がhatena2.Rに渡されました。
文字列として渡されるので、例では数値に変換する関数を使っています。

ぜひお役立てください!(^ ^)


以下を参考にしました。


宣伝
トレーニング「R入門」もございます

amelieff.jp