Python+R PypeRの使い方

PythonとRを同時に使うことが多いため、PypeRなるライブラリを使ってみます。
ファイル操作はPython、ネットワーク分析はRに軍配が上がると思いますが、往復するのが面倒臭いと思って導入してみました。

sudo pip install pyper

でインストール

import pyper

r=pyper.R()
print r("library(igraph)")
print r("dg<-matrix(c(0,1,0,1,0,1,0,1,1,0,0,1,0,0,0,0),nrow=4,ncol=4,byrow=TRUE)")
print r("dg")

或いは、

import pyper

r=pyper.R()
print r("""
library(igraph)
dg<-matrix(c(0,1,0,1,0,1,0,1,1,0,0,1,0,0,0,0),nrow=4,ncol=4,byrow=TRUE)
dg
""")

出力をそのままコピーすると以下のようになりました。

try({library(igraph)})

try({dg<-matrix(c(0,1,0,1,0,1,0,1,1,0,0,1,0,0,0,0),nrow=4,ncol=4,byrow=TRUE)})

try({dg})
     [,1] [,2] [,3] [,4]
[1,]    0    1    0    1
[2,]    0    1    0    1
[3,]    1    0    0    1
[4,]    0    0    0    0

pyperをimportして、r=pyper.R()でrオブジェクトを作ります。
rに引数として文字列を与えれば、その文字列そのまま、Rのターミナルへ入力したものと同じ扱いとなります。

print関数を付けるとR出力を標準出力として出せ、変数に文字列として代入することもできます。

どうもRのほうで文法ミスするとプログラムが停止しないので、一旦Rを実行できたら、そのソースコードをコピペするという使い方をしてみようと思います。


以前紹介したsqliteライブラリの扱いそっくりですね。

パイプ (コンピュータ) - Wikipedia
このpipeとpython→RをかけてPypeRということでしょうね。

逆にRからPythonを操作するrPythonライブラリもあるそうです。