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

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

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

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

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

3 ответа

Решение

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


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

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

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

Мой совет:

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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