pyRserve モジュールは、Python から Rserve セッションを操作するときに非常に便利です。
「conn.r」や「conn.ref」などの式を名前の前に付けることで、R オブジェクトにアクセスできます。
import pyRserve
import numpy
conn = pyRserve.connect()
conn.r.List = [1.1, 2.2, 3.3]
conn.r.sapply(conn.ref.List, conn.ref.sqrt)
Out[23]: array([ 1.04880885, 1.4832397 , 1.81659021])
ただし、関数名にドットがある場合、これは機能しません。
conn.r.sapply(conn.ref.List, conn.ref.as.integer)
conn.r.sapply(conn.ref.List, conn.ref.as.integer)
^
SyntaxError: invalid syntax
私が思いついた唯一の解決策は、R 式全体を文字列でラップし、eval 関数を使用して実行することです。
conn.eval('result = as.integer(List)')
conn.r.result
Out[46]: array([1, 2, 3], dtype=int32)
それを行うより生産的な方法はありますか?
注:別の SO スレッドで、同様の質問が rpy2 モジュール (別の python R バインディング) について回答されていることに気付きました。