RスクリプトのCGI化やシステムコールで使う方法

CGIの設定は,
http://d.hatena.ne.jp/arupaka-_-arupaka/20140820

  • Rの実行コマンドは,Rscript コマンドを使う.

Rscript xxx.R コマンド引数 コマンド引数


コマンド引数は,

args=commandArgs(trailingOnly=T)

でargs配列に入る.

そのため,スクリプトの一行目に
#!/usr/local/bin/Rscript
を追加.

例えば,
test.R

#!/usr/local/bin/Rscript
cat("test\n")
args=commandArgs(trailingOnly=T)
cat(args[1],"\n")
quit()

として,実効権限をつける.
例えば,

chmod a+x test.R 

実行は,

./test.R

とか

./test.R dogs

とか.

CGIだとデバックしにくいので,log.txtにlogを出力しとくと便利かも.

./test.R dogs 2> log.txt

実行ディレクトリにも注意.
2> は標準エラー出力

  • そのほかの注意事項

(1) 全角スペースなどに注意.WindowsのRだと全角スペースを無視して実行してくれる.
(2) 画面出力ファイルに注意.dev.copy2eps()から,png(file="xxx.png") plot(xx);dev.off();等に出力デバイス直す.
(3) 日本語文字列を扱うときはスクリプト内で環境変数LANGを日本語に.例えば,rubyだと ENV["LANG"]="ja_JP.UTF-8"
(4) R単独でCGIにするなら,一行目に cat("Content-type: text/html\n\n")が必要.CGIのルール.