こんにちは、アメリエフのFukuです。
長いコマンドを打つときや、
同じようなコマンドを繰り返し実行するときは、
ファイルに書いておいたコマンドーースクリプトを利用すると便利です。
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引数以降の 99
と1
がhatena2.Rに渡されました。
引数は文字列として渡されるので、例では数値に変換する関数を使っています。
ぜひお役立てください!(^ ^)
以下を参考にしました。
R言語 逆引きハンドブック (石田 2012)
宣伝
トレーニング「R入門」もございます
アメリエフでは、バイオデータ解析やそのシステム・インフラ環境の開発に興味のあるエンジニア・リーダー候補を募集しています。
www.wantedly.com