私は 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
source
r
は、ソース ファイルを実行する関数です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")]
それは間違ったやり方です。
同じ考え方が次の行にも当てはまるかもしれません。