R の利用

Perl に限らず、他のプログラム言語から R を呼び出して実行するとき、R のバッチモードを利用する。Perl から利用する場合は、Linux コマンドと同様に system 関数などを利用して R を実行する。

手順として以下のように処理するとよい。

  1. Perl で R のスクリプトを作成し、すべてファイルに書き出す。R のスクリプトの中で、実行結果をファイルに保存するように書く。
  2. Perl の system 関数でファイルとして書き出した R スクリプトを実行する。
  3. Perl で R の実行結果を読み込んで、次の処理を行う。

my $ncol = 100;
my $nrow = 20;
my $r_output = "./makeResult.txt";


# R スクリプトを作成
my $script = <<"EOF";
a <- $ncol
b <- $nrow
x <- matrix(rnorm(a * b), ncol = a, nrow = b)
write.table($r_output)
EOF

# R スクリプトを makeMatrix.R としてファイルに書き出す
open (my $fh, '>', "./makeMatrix.R") or die;
print $fh $script;
close ($fh);


# makeMatrix.R を実行
system("R --vanilla --slave < ./makeMatrix.R");


# R の実行結果の読取
open(my $fh, '<', $r_output) or die;
my @result = <$fh>;
close(my $fh);