Вызов скрипта R из python с использованием rpy2
Я очень новичок в rpy2, а также R.
У меня в основном есть скрипт R, script.R, который содержит такие функции, как rfunc(папка). Он находится в том же каталоге, что и мой скрипт на python. Я хочу вызвать его из Python, а затем запустить одну из его функций. Мне не нужен вывод из этой функции R. Я знаю, что это должно быть очень просто, но я не могу найти примеры кодов Python, вызывающих R-скрипты. Что я сейчас делаю в 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-вещанием.
Итак, как я могу правильно назвать свой сценарий?
2 ответа
source
это r
функция, которая запускает r
исходный файл. Поэтому в rpy2
У нас есть два способа это назвать:
r['source']("script.R")
или же
r.source("script.R")
r[r.source("script.R")]
это неправильный способ сделать это.
Та же идея может относиться и к следующей строке.
Rpy2 может позволить вам превратить скрипт R, определяющий функции и другие объекты, в пространство имен Python:
http://rpy.sourceforge.net/rpy2/doc-2.4/html/robjects_rpackages.html