0

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 バインディング) について回答されていることに気付きました。

4

1 に答える 1