Вызов R script из python с использованием rpy2

Я очень новичок в rpy2, а также в R.

В основном я имею R script, script.R, который содержит функции, такие как rfunc (папка). Он находится в том же каталоге, что и мой python script. Я хочу назвать его с Python, а затем запустить одну из своих функций. Мне не нужен какой-либо вывод из этой функции R. Я знаю, что это должно быть очень просто, но я не могу найти примеры R script -calling кодов питона. То, что я делаю сейчас, в 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 thingie.

Итак, как я могу правильно вызвать мой script?

Ответ 1

source - это функция r, которая запускает исходный файл r. Поэтому в rpy2 у нас есть два способа назвать это:

r['source']("script.R")

или

r.source("script.R")

r[r.source("script.R")] - неправильный способ сделать это.

Такая же идея может применяться к следующей строке.

Ответ 3

Я надеюсь, что этот ответ также поможет вам в более общем смысле, если вы хотите передать более сложные коды в R и вернуть результаты обратно

fooobar.com/info/14462389/...