Python で R
現在、オープンソースの数値計算では、Rの最大のライバル?(NumPy+SciPy+pandas + etc.のモジュールとあわせて)になりつつあるスクリプト言語Python。
RPy2はPython で、R が使える。
Rpy を書き直したもの。現行の Python に対応。インストールも楽そう。Windows 用バイナリあり。
sudo easy_install rpy2
import rpy2.robjects as robjects
r = robjects.r print(r('3')) # または r('3')[0]
r('3') #だと値は表示されない
import rpy2.robjects as robjects rmean = robjects.r('mean') rvar = robjects.r('var') tmp_vec = [1.1,3.3,5.5] vec = robjects.FloatVector(tmp_vec) mean = rmean(vec)[0] var = rvar(vec)[0]
import rpy2.robjects as robjects r = robjects.r ctl = robjects.FloatVector([4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14]) trt = robjects.FloatVector([4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69]) group = r.gl(2, 10, 20, labels = ["Ctl","Trt"]) weight = ctl + trt robjects.globalenv["weight"] = weight robjects.globalenv["group"] = group lm_D9 = r.lm("weight ~ group") print(r.anova(lm_D9))このANOVAのP値だけ抜き出します。これは参照ページにはないです。r.anova(lm_D9)は分散分析表の各数値が入った二次元のリストになっているようです。
p = r.anova(lm_D9)[4][0]最初の要素は分散分析表でのカラムの順番を示しており、二つめは群間と郡内の各行ですが、P値は群間の行にでてくるので0で取り出せます。
r.X11()
Linux と Win32 をサポート。
from rpy import *
r.rのコロンの付かない関数名(引数,...)または r('rの関数名')
R と Python 双方から利用可能