Вызов 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")]
- неправильный способ сделать это.
Такая же идея может применяться к следующей строке.
Ответ 2
Rpy2 может позволить вам превратить R script определяющие функции и другие объекты в пространство имен Python:
http://rpy.sourceforge.net/rpy2/doc-2.4/html/robjects_rpackages.html#importing-arbitrary-r-code-as-a-package
Ответ 3
Я надеюсь, что этот ответ также поможет вам в более общем смысле, если вы хотите передать более сложные коды в R и вернуть результаты обратно
fooobar.com/info/14462389/...