Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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


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

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

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

Мой совет:

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

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


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

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

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

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

  • Теперь можно комбинировать R и Python с помощью rmagic in IPython/Jupyter, что значительно облегчает работу по созданию воспроизводимых исследований и ноутбуков, которые объединить оба языка.

Ответ 2

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

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

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

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

Ответ 3

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

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

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