// 詠み人知らず 2008/10/09
COLOR(red){SIZE(30){他言語からR利用(インチキ版)}}

よいこはまねしないこと。

インチキなやり方で,他の言語から R を使う(R と連絡を取る)

*1. 例1. awk から R の作図機能を使う [#na3062f4]

awk で,R プログラムを生成する。作図結果はファイルに保存するようにしておく。~
プログラムの最後の部分で,そのプログラムを system 関数で起動する。~
awk プログラム(名前を仮に,a.awk としておく)
 BEGIN {
 	out = "a.R"
 	print "pdf('a.pdf', width=5, height=4)" > out
 	print "hist(rnorm(1000))" > out
 	print "dev.off()" > out
 	close(out)
 	system("R --vanilla --slave < a.R")
 }
このプログラムを起動する。
 $ awk -f a.awk

*2. 例2. awk から 「データ入力後,主成分分析をするプログラム」を起動し,結果を受け取る [#c7d0c0e0]
awk プログラム(名前を仮に,b.awk としておく)
 BEGIN {
 	out = "b.R"
 	print "x <- read.table('b.dat', header=TRUE)" > out
 	print "print(prcomp(x)$rotation)" > out
 	close(out)
 	system("rm b.out")
 	system("R --vanilla --slave < b.R > b.out")
 	while (system("test -e " out)) { }
 	while (system("test -e " b.out)) { }
 	while (getline < "b.out") {
 		print $0
 	}
 }
使用するデータファイルは R が read.table で読めるようなもの。上の例に対するファイルは iris[,-5] で書き出したもの。~
このプログラムを起動する。
 $ awk -f b.awk
                      PC1         PC2         PC3        PC4
 Sepal.Length  0.36138659 -0.65658877  0.58202985  0.3154872
 Sepal.Width  -0.08452251 -0.73016143 -0.59791083 -0.3197231
 Petal.Length  0.85667061  0.17337266 -0.07623608 -0.4798390
 Petal.Width   0.35828920  0.07548102 -0.54583143  0.7536574

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