Вызов скрипта 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

Другие вопросы по тегам