tata色々な備忘録

データ解析、画像解析、化学分析などなど

RとPythonの連携 ?

Rとpythonを連携させてみる。

 まずはpython

import sys
 a = sys.argv[1]
 b = a * a
 f = open("test.txt","a+")
 f.write("str(b)")
 f.close

これをtest.py等、なんでも良いので保存

(test.txtがあること前提。無いなら"a+"→"w"へ)

 

続いてR

>Z <- 10 
>cmd <- paste("python test.py",z)
>system(cmd)

 これで10×10の結果がtext.txtに入っている。

system()はターミナルのコマンドを実行できるので、

ターミナルで下のように書いたのと同じ。

$ python test.py 10

(フルパスで書くか、作業ディレクトリは同じにしておくこと)

 

ただ、引数に肝心の行列は使えない。

 

>Z <- 1:10 

こうしてしまうと

> cmd <-paste("python R_python.py",z)
> cmd
 [1] "python R_python.py 1"  "python R_python.py 2" 
 [3] "python R_python.py 3"  "python R_python.py 4" 
 [5] "python R_python.py 5"  "python R_python.py 6" 
 [7] "python R_python.py 7"  "python R_python.py 8" 
 [9] "python R_python.py 9"  "python R_python.py 10"

 

このように残念な感じになる。実行されるのも最初だけ。

for文か何かで逐次処理すれば活用先はあるかもしれないが、

学習コストの軽減以外に実用性はなさそう。

 

numpyに代入できればなあ。

 

参考

 http://jiy.blog.shinobi.jp/Entry/282/