Выполнение R файлов изнутри Python с использованием PypeR - PullRequest
0 голосов
/ 24 января 2020

Мой текущий рабочий проект заключается в написании Python программы, которая в разные моменты должна полагаться на R. Поскольку я плохо знаю R, а человек, помогающий мне, не знает Python так хорошо, фактический код R отсутствует в моей программе. Вместо этого он открыл Блокнот, вставил туда код R и сохранил его как (name).r. После выполнения выходные данные записываются в текстовый файл, который затем можно прочитать Python.

Все, что мне нужно сделать, это попросить Python попросить R запустить (name).r

Я пытался использовать subprocess.run. Это работало некоторое время, а затем по неизвестной причине перестало работать и теперь ничего не делает. Затем я попытался использовать rpy2, который тоже работал некоторое время; но теперь похоже, что установка не работает, и у меня возникают проблемы с ее переустановкой.

Я бы хотел попробовать третий вариант: PypeR. Я использовал pip install pyper. Выглядело, как будто это было успешно.

Для простоты я открыл Блокнот и набрал следующее, и сохранил его как hello.r:

message <- 'goodbye'
write.table(message,'C:/Users/(my name)/Desktop/(folder)/goodbye.txt',row.names=FALSE,col.names=FALSE)

Открытие R вручную и вставка копии Линии в одно время действительно работают. Но я не могу заставить его работать с Python. Вот некоторые вещи, которые я пробовал (я всегда ставлю import pyper вверху):

pyper.runR("source('C:/Users/(muy name)/Desktop/(folder)/hello.r')")

Это дает NameError: имя 'dump_stdout' не определено

pyper.R("source('C:/Users/(my name)/Desktop/(folder)/hello.r')")

This дает FileNotFoundError: [WinError 2] Системе не удается найти указанный файл

r=pyper.R("C:/Program Files/R/R-3.4.1/bin/i386/Rgui.exe")
r("source('C:/Users/(my name)/Desktop/(folder)/hello.r')")

Это приводит к открытию R Gui с пустой консолью R. И тогда ничего не происходит. Когда я возвращаюсь к Python, консоль показывает, что Python занят, пока я не нажму кнопку остановки, после чего я получаю «OSError: [Errno 22] Неверный аргумент

Как правильно выполнить привет .r?

Спасибо

1 Ответ

0 голосов
/ 24 января 2020

Похоже, я понял. Это работает:

r=pyper.R(RCMD="C:/Program Files/R/R-3.4.1/bin/R")
r.run("source('C:/Users/(my name)/Desktop/(folder)/hello.r')")
...