他言語からR利用(インチキ版)
よいこはまねしないこと。
インチキなやり方で,他の言語から R を使う(R と連絡を取る)
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
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 " 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