アメリエフのブログ

Amelieff Staff Blog

Rスクリプトの使い方

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

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

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

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

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

## hatena.R
a <- sqrt(2)  
print(a)  

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

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

メモ帳に書いておいたコマンドを、全部コピーしてRコンソールにペーストする作業に近いでしょうか。 それをスマートにやってくれる関数です。
注意として、画面に何かを表示したい場合は print() 関数が必要です。

> 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)    
print(c)  
$ Rscript hatena2.R 99 1
[1] 10

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

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


以下を参考にしました。


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

amelieff.jp