そうそう、RobjをPython側でリスト、辞書で受け取ると
Rpyがうまく変換してくれないと、正しく実行してくれない。
特に、R特有のクラスである場合は困ってしまう。悩みます。
[[' 3', '-none-', 'numeric'], [' 11', '-none-', 'list'], [' 1', '-none-', 'num
eric'], ['100', '-none-', 'numeric'], [' 3', '-none-', 'call'], ['100', '-none-
', 'numeric'], [' 1', '-none-', 'logical'], [' 3', 'formula', 'call'], [' 1',
'-none-', 'logical'], [' 1', '-none-', 'character'], [' 3', 'terms', 'call'],
[' 0', '-none-', 'NULL'], [' 3', '-none-', 'list'], [' 4', '-none-', 'numeri
c'], [' 0', '-none-', 'NULL'], [' 0', '-none-', 'NULL'], [' 4', '-none-', 'li
st'], [' 1', '-none-', 'numeric'], ['100', '-none-', 'numeric'], [' 1', '-none
-', 'numeric'], [' 5', '-none-', 'list'], [' 3', '-none-', 'numeric'], [' 1',
'-none-', 'numeric'], [' 1', '-none-', 'numeric'], [' 1', '-none-', 'numeric'
], ['100', '-none-', 'numeric'], ['100', '-none-', 'numeric'], ['100', '-none-',
'numeric'], [' 3', '-none-', 'list'], [' 1', '-none-', 'numeric']]
こんなのが返ってきてしまう。
そんなときは、こうしてください。
#一時的に生のRobjを受け取るようにする
set_default_mode(NO_CONVERSION)
ret = r.glm(r("y~x1+x2"),data=r.data_frame(x1=x1,x2=x2,y=y,family='gaussian'))
# デフォルトのrpyデータ変換に戻す
set_default_mode(BASIC_CONVERSION)
# pythonで読めるデータに変換
# このときBASIC_CONVERSIONに戻していないと返り値もRobjになってしまう。
ret_py = ret.as_py()
# summaryする。係数、Interceptの検定なども出てくる。
smry = r.summary(ret)
ま、マニュアルしっかり見れば実は書いてあることもあるわけですが、
正直、自分も「もっと直感的に使えるようにしてくれ。Pythonなんだし。」
とか、おもうてしまいます。
いじょ。
最終更新:2007年05月27日 20:45