rpy2を使用してPythonからRスクリプトを呼び出す質問する

rpy2を使用してPythonからRスクリプトを呼び出す質問する

私は rpy2 も R も初心者です。

基本的に、rfunc(folder) などの関数を含む R スクリプト、script.R があります。これは、Python スクリプトと同じディレクトリにあります。これを Python から呼び出して、関数の 1 つを起動します。この R 関数からの出力は必要ありません。非常に基本的なものであることはわかっていますが、R スクリプトを呼び出す Python コードの例が見つかりません。現在 Python で実行していることは次のとおりです。

import rpy2.robjects as robjects

def pyFunction(folder):
    #do python stuff 
    r=robjects.r
    r[r.source("script.R")]
    r["rfunc(folder)"]
    #do python stuff

pyFunction(folder)

ソースの行にエラーが発生します:

r[r.source("script.R")] File "/usr/lib/python2.7/dist-packages/rpy2/robjects/__init__.py", line 226, in __getitem__ res = _globalenv.get(item) TypeError: argument 1 must be string, not ListVector

私が与えた引数が文字列ではない理由がよくわかりません。次の行でも同じ問題が発生すると思います。フォルダこれは Python の文字列であり、R のものではありません。

では、スクリプトを適切に呼び出すにはどうすればよいでしょうか?

ベストアンサー1

sourcerは、ソース ファイルを実行する関数ですr。したがってrpy2、 では、次の 2 つの方法で呼び出すことができます。

import rpy2.robjects as robjects
r = robjects.r
r['source']('script.R')

または

import rpy2.robjects as robjects
r = robjects.r
r.source('script.R')

r[r.source("script.R")]それは間違ったやり方です。

同じ考え方が次の行にも当てはまるかもしれません。

おすすめ記事