- pythonからRを動かしてその結果をpython内に取り戻すことができる
- 参考
- pyperパッケージをインストールして使えるようにしたうえで
- numpyオブジェクトを使ってRのオブジェクトを取り出すようなRの動かし方を指定する
from pyper import *
r = R(use_numpy=True)
outputs = r("a <- 3; print(a + 5)")
outputs
'try({a <- 3; print(a + 5)})\n[1] 8\n'
x_py =r.get('a')
x_py
3
r("x = matrix(rnorm(20),ncol=2)")
x_py =r.get('x')
x_py
array([[ 0.48296985, -1.31237143],
[ 0.26313735, 0.17361424],
[-0.62325386, -1.57476065],
[-2.2620153 , 1.83864163],
[ 1.31291217, 1.59120925],
[-1.72555325, -0.69653969],
[ 0.94822337, 1.76162395],
[-0.0518286 , -0.15631062],
[ 1.58084999, 0.64470825],
[ 2.0807602 , -0.07323586]])
- 長いコードを与えるのは、ちょっと面倒くさい模様。改行を許さないので、";"区切りで連続書きする
rscript = "x = matrix(rnorm(210),ncol=2);"
rscript += "x = x/apply(x^2,1,sum);"
rscript += "obj = list();"
rscript += "library(onion);"
rscript += "qtn = 3+2*Hi;"
rscript += "obj[[1]] = qtn"
rscript
Out[8]:
'x = matrix(rnorm(210),ncol=2);x = x/apply(x^2,1,sum);obj = list();library(onion);qtn = 3+2*Hi;obj[[1]] = qtn'
r("x = " +rscript)
x_py =r.get('obj[[1]]')
x_py
array([[3],
[2],
[0],
[0]])