他言語からR利用(インチキ版)
の編集
http://www.okadajp.org/RWiki/?%E4%BB%96%E8%A8%80%E8%AA%9E%E3%81%8B%E3%82%89R%E5%88%A9%E7%94%A8%EF%BC%88%E3%82%A4%E3%83%B3%E3%83%81%E3%82%AD%E7%89%88%EF%BC%89
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
// 詠み人知らず 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 " 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
タイムスタンプを変更しない
// 詠み人知らず 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 " 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
テキスト整形のルールを表示する