Rバッチモード

R はバッチモードにより実行することができる。バッチモードを利用することで、時間のかかる大量な処理をファイルに書いてから実行させたり、他の言語から R を呼び出して使ったりすることができるようになる。

コマンドラインでの実行

コマンドライン上で R にスクリプトファイルを読み込ませて、処理を行う際に --slave--vanilla オプションを付ける。

R --slave --vanilla < script.R

あるいは次のようにしても実行できる。

Rscript --slave --vanilla script.R

引数の受け渡し

バッチモードを利用してスクリプトを実行すると、外部から引数を与えるときは --args を付ける。外部からの引数は文字列として R に代入される。そのため、数値として利用する場合は as.integeras.numeric などを利用して数値に変更する必要がある。

R --slave --vanilla --args 10 20 < script.R
#Rscript --slave --vanilla script.R 10 20        # このようにしても可
argv <- commandArgs(TRUE)
x <- as.numeric(argv[1])
y <- as.numeric(argv[2])
z <- x + y
z

Perl から R 呼び出して実行

Perl から R を呼び出して実行する場合はバッチモードを利用する。スクリプトファイルを一度作成してから実行させる。

use strict;

# Rコードを作成
my $code = <<EOF;
    a <- 10
    b <- 10
    x <- a + b
    write.table(x, file = "result.txt")
EOF

# Rコードをファイルに保存
open(my $fh, '>', "./exe_script.R") or die;
print $fh $code;
close($fh);

# Rコードを実行
system("R --slave --vanilla < ./exe_script.R");