Выполнение файлов R изнутри Python с использованием PypeR

Мой текущий рабочий проект заключается в написании программы 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')")

Это дает 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')")

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

Как правильно запустить hello.r?

Спасибо

1 ответ

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

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')")
Другие вопросы по тегам