COLOR(red){SIZE(30){バッチモード}}

普通 R は対話モードで使用するが、定型的な作業や、 Perl  等のスクリプトから実行するには、
バッチモードも便利である。

#contents

*R をバッチモードで使用する。
*R をバッチモードで使用する。 [#u4254182]

COLOR(magenta){test.R}  を実行内容を書いた R  のスクリプトファイル、COLOR(magenta){test.out} 
を出力内容を納めるファイルとする。

 % R --vanilla --slave < test.R > test.out  # Unix のコマンドラインからバッチモードで実行

test.R  は例えば、 

  write(rnorm(4),"") # 正規乱数を4つ出力する
  q()   #  R  を終了する

*バッチモードの R  への引数
*バッチモードの R  への引数 [#s2e60797]

はてこれの便利な使い道は?

 % R --vanilla --quiet --args bli bla blo  # bli bla blo はコマンドライン引数
                                           # 一人でに R が起動される
 > commandArgs()  # 記録された引数を表示する関数
  [1] "/usr/bin/R.bin"  #  起動された命令
  [2] "--vanilla"
  [3] "--quiet"
  [4] "--args"
  [5] "bli"  # 3つの引数(文字列として記録)
  [6] "bla" 
  [7] "blo"

コマンドライン引数を数字にしたければ x <- as.numeric(commandArgs()[5:7])  とする。

便利かどうかは分かりませんが,プログラムへのパラメータの引き渡し方としては必須でしょう。
以下の例では引数の位置を決めうちしていますが,そのあたりはちゃんと処理するようにしないと不便だし危険ですけどね。
 乱数のヒストグラムを作って pdf ファイルへ書き出すプログラム
 $ [12] > cat test.R
 args <- commandArgs()
 file <- args[5]
 pdf(file, width=as.numeric(args[6]), height=as.numeric(args[7]))
 hist(rnorm(as.numeric(args[8])))
 dev.off()
 ファイル名とサイズとデータサイズを,R への引数で与える
 $ [13] > R --vanilla --quiet --args test1.pdf 8 5 1000 < test.R
 > args <- commandArgs()
 > file <- args[5]
 > pdf(file, width=as.numeric(args[6]), height=as.numeric(args[7]))
 > hist(rnorm(as.numeric(args[8])))
 > dev.off()
 null device 
           1 
 > 
 $ [14] > R --vanilla --quiet --args test2.pdf 5 3 100 < test.R
 > args <- commandArgs()
 > file <- args[5]
 > pdf(file, width=as.numeric(args[6]), height=as.numeric(args[7]))
 > hist(rnorm(as.numeric(args[8])))
 > dev.off()
 null device 
           1 

*perlでのテキストファイルハンドリングとRのバッチモード
2008-6-26 ma_ko 追記:R 2.7.0の時点では commandArgs(trailingOnly = TRUE) とすると --args 以下の引数がとってこれるようになっています。

*perlでのテキストファイルハンドリングとRのバッチモード [#q45103af]
テキストファイルをハンドルしつつ、Rが得意な部分をRのバッチモードで実施するのは、簡単で便利。関数を変えるたびに使いまわすための雛形を作成。詳細は
-使用法説明サイト
--[[■[R]バッチモード処理のテンプレート:http://d.hatena.ne.jp/ryamada/20050916]] 

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS