Интерфейс Python для языка программирования R

Я совсем новичок в R и в значительной степени привык к python. Мне не так удобно писать R-код. Я ищу интерфейс Python для R, который позволяет мне использовать пакеты R на языке Python.

Я провел исследование Google и нашел несколько пакетов, которые могут это сделать:

Но не уверены, какой из них лучше? Что имеет больше участников и более активно используется?

Обратите внимание, что моим основным требованием является питоновский способ доступа к пакетам R.


person darshan    schedule 30.07.2012    source источник
comment
Вы можете добавить reticulate в список cran.r-project .org/web/packages/reticulate/vignettes/   -  person SemanticBeeng    schedule 28.02.2018


Ответы (3)


Как указал @lgautier, уже есть другой ответ на эту тему. Я оставляю свой ответ здесь, так как он добавляет опыт подхода к R как новичка, сначала зная Python.


Я использую как Python, так и R и сочувствую вам как новичку в R.

Поскольку любой ответ, который вы получите, будет субъективным, я резюмирую несколько моментов из своего опыта:

  • Я использую rpy2 в качестве интерфейса и нахожу его "Pythonic", стабильным, предсказуемым и достаточно эффективным для моих потребности. Я не использовал другие пакеты, так что это не комментарий к ним, а скорее к достоинствам самого rpy2.
  • НО не ожидайте, что будет простой способ использования R в Python без изучения обоих. Я считаю, что добавление интерфейса между двумя языками упрощает кодирование, когда вы знаете оба, но кошмар отладки для тех, кто не владеет одним из языков.

Мой совет:

  1. Для большинства приложений в Python есть пакеты, которые позволяют вам делать большинство вещей, которые вы хотите делать в R, от обработки данных до построения графиков. Ознакомьтесь с SciPy, NumPy, pandas, BioPython, matplotlib и другие научные пакеты или даже полную версию Anaconda или Enthought дистрибутивов Python. Это позволяет вам оставаться в среде Python и обеспечивает большую часть необходимых вам возможностей.
  2. В то же время вам понадобится широкий спектр специализированных пакетов R, поэтому потратьте некоторое время на его изучение в интерактивной среде. Я обнаружил, что почти невозможно освоить даже основы R в командной строке, но RStudio и руководства на Quick-R и Learn-R заставил меня работать очень быстро.

Как только вы освоите и то, и другое, вы сможете творить чудеса с rpy2 без ужасов межъязыковой отладки.


Новые ресурсы

Обновление от 29 января 2015 г.

Этот ответ оказался популярным, и поэтому я подумал, что было бы полезно указать на два более свежих ресурса:

Триплет R, Rserve и pyRserve позволяет построить сетевой мост от Python к R: теперь R-функции можно вызывать из Python, как если бы они были реализованы в Python, и даже полные R-скрипты могут выполняться через это соединение. .

person daedalus    schedule 30.07.2012
comment
Я обнаружил, что отладка кода R из Python довольно сложна. Например, операторы browser не были приняты. Какой у тебя опыт? - person Paul Hiemstra; 30.07.2012
comment
@PaulHiemstra: здесь то же самое. Я никогда не мог быть уверен, что что-то не работает (а) потому что у меня была ошибка в Python или R, или (б) потому что rpy2 не работал, или (в) комбинация. В настоящее время я кодирую нужный мне бит напрямую в R, а затем запускаю скрипт из Python, если мне это нужно. - person daedalus; 30.07.2012
comment
браузер в настоящее время не работает из rpy2 ( bitbucket .org/lgautier/rpy2/issue/66/). Ошибка, возникающая во время оценки кода R, вызовет исключение RRuntimeError, которое должно указать, где была точка сбоя в R или Python. - person lgautier; 30.07.2012
comment
Использовали ли вы какой-либо другой пакет, кроме Rpy2! Хороши ли они? - person darshan; 30.07.2012
comment
Нет, извини, @darshan. Я оставляю другим перечислять опыт в этих пакетах. Тем не менее, другие ответы, на которые ссылались, имеют некоторые убедительные плюсы и минусы, которые помогут вам начать работу. Просто просмотрев их документы, вы сможете оценить, насколько они соответствуют вашему стилю написания кода. - person daedalus; 30.07.2012
comment
Я особенно ценю, что вы сэкономили мне часы отладки... но это кошмар отладки для тех, кто плохо владеет одним из языков. - person inmanl; 25.04.2020

Вопрос о сравнении rpy2, pyrserve и pyper друг с другом был ответил на сайте ранее.

Что касается количества участников, я бы сказал, что все 3 имеют относительно небольшое количество. Такой сайт, как Ohloh, может дать более подробный ответ.

Сложно определить, насколько активно используется пакет. Одним показателем может быть количество загрузок, другим может быть количество сообщений в списках рассылки или количество вопросов на таких сайтах, как stackoverflow, количество других пакетов, использующих или цитирующих его, количество резюме или вакансий, в которых упоминается упаковка. Хотя я считаю, что могу дать справедливую оценку, у меня также может возникнуть конфликт интересов. ;-)

Все три имеют свои плюсы и минусы. Я бы сказал, что вы основываете свой выбор на этом.

person lgautier    schedule 30.07.2012
comment
Совершенно справедливо, Лоран, и спасибо за отличную работу над rpy2 :) - person daedalus; 30.07.2012
comment
In rpy2 — единственный проект, указанный в Ohloh. Но это нормально. Судя по форумам, rpy2 выглядит более обсуждаемым в stack-overflow. Если меня ударят в процессе, я должен попросить вас, ребята. Спасибо за ответ :) - person darshan; 30.07.2012

Мой личный опыт был с Rpy, а не Rpy2. Я использовал его некоторое время, но отказался от него в пользу использования system команд. Типичным случаем для меня был запуск модели FORTRAN с использованием скриптов Python и постобработка с помощью R. По моему опыту, самым простым решением было создание инструмента командной строки с использованием R, что довольно просто (по крайней мере, в Linux). Инструмент командной строки может быть запущен в корневом каталоге запуска модели, и сценарий создаст набор объектов R и графиков в каталоге Routput. Преимущество такого разделения R и Python заключалось в том, что я мог легко отлаживать код R отдельно от кода Python.

Я думаю, что Rpy действительно сияет, когда требуется много обратной связи между R и Python. Но если функциональность хорошо отделима, а накладные расходы дискового ввода-вывода не так уж велики, я бы придерживался system вызовов. Дополнительную информацию о системные вызовы и Rscript для запуск сценариев R в качестве инструмента командной строки.

Что касается вашего желания писать код R в стиле Python, это невозможно, так как все решения требуют, чтобы вы писали код R в синтаксисе R. Для Rpy это означает синтаксис R, но немного другой (например, без .). Я согласен с @gauden в том, что нет возможности использовать R через Rpy.

person Paul Hiemstra    schedule 30.07.2012
comment
Фрагменты кода о том, как настроить вызов функции в R для запуска из Python описанным вами способом, предоставляются здесь. - person Mike O'Connor; 06.01.2019