Теперь очень легко использовать оба языка вместе для достижения наилучших результатов.
В последнее время я обнаружил, что выполняю больше проектов, используя одновременно R и Python. Для меня стало более важным использовать лучшие инструменты для работы и не ограничиваться одним языком. Есть вещи, которые Python делает лучше всего, а есть вещи, которые R делает лучше всего, поэтому, если мы можем использовать и то, и другое, когда нам нужно, мы сможем сделать все, что в наших силах. В недавнем примере я хотел создать приложение Shiny для создания параметризованных документов Powerpoint и хотел закодировать обработку данных в R, чтобы воспользоваться преимуществами tidyverse, но использовал Python для кодирования редактирования Powerpoint, что было легко в пакете python-pptx
.
В RStudio IDE теперь действительно легко работать на обоих языках. Чтобы это работало, вам необходимо установить и загрузить пакет reticulate
в R. Вот пять вещей, которые вы можете сделать, которые позволят вам беспрепятственно кодировать на обоих языках в одном проекте:
1. Определите среду Python при запуске проекта.
Чтобы избежать проблем, связанных с использованием неправильного интерпретатора Python, вы можете определить среду Python при запуске проекта, создав файл .Rprofile
и сохранив его в каталоге проекта. Ваш .Rprofile
содержит код, который будет выполняться при каждом запуске вашего проекта. Обычно у меня в .Rprofile
есть эти две строки кода:
Sys.setenv(RETICULATE_PYTHON = "<path>") print(paste("Python environment forced to", Sys.getenv("RETICULATE_PYTHON")))
где <path>
- это путь к исполняемому файлу Python в среде Python, которую вы хотите использовать. Первая команда устанавливает его как исполняемый файл Python. Вторая команда печатает подтверждение этого, которое будет отображаться в вашем терминале каждый раз, когда вы запускаете свой проект. Вот как выглядит мой терминал, когда я запускаю один из своих проектов:
2. Используйте repl_python()
для написания кода в реальном времени на Python
Вам нужно будет протестировать свой код Python, а также код R при создании проекта. Функция repl_python()
в пакете reticulate
переключает ваш терминал R на терминал Python, чтобы вы могли писать код прямо на Python. Вы можете выйти из этого с помощью команды exit
, затем закодировать еще немного на R, а затем, если вы вернетесь в свой терминал Python, он все равно запомнит все объекты из последнего сеанса, что означает, что его легко легко перемещать между языками. Вот простой пример:
3. Обмен объектами между Python и R
Между Python и R можно обмениваться любыми достаточно стандартными объектами данных, такими как значения, списки и фреймы данных. Чтобы использовать объект R с именем my_r_object
в Python, вы вызываете его с помощью r.my_r_object
. Чтобы использовать объект Python с именем my_python_object
в R, вы можете вызвать его с помощью py$my_python_object
. Вот еще один пример этого в действии, когда я переношу набор данных themtcars
из R в Python:
Объекты данных будут переведены в их эквивалентные структуры на разных языках. Например, список в R будет переведен в dict в Python:
4. Превратите функции Python в функции R
Когда вы используете эти два языка вместе, вам в конечном итоге потребуется выполнить код Python как функцию в R. Если вы записываете свою функцию Python в файл, а затем отправляете этот файл в R с помощью source_python()
, ваша функция Python становится функцией R. для использования по мере необходимости. Вот простой пример, в котором я пишу функцию Python для сложения двух чисел и сохранения их в файле sumof.py
:
def sumof(a, b): return a+b
Теперь я могу исходить sumof.py
, и он становится функцией R:
5. Напишите документы R Markdown, которые перемещаются между R и Python.
Правильно настроив .Rprofile
, вы можете создавать документы с фрагментами кода на двух языках и обмениваться объектами между фрагментами кода. Вот простой код R Markdown, который демонстрирует это:
Это дает следующий результат:
Таким же образом вы можете писать функции на одном языке и легко использовать их на другом:
Для меня эта функциональность сделала возможным гораздо больше вещей в моей работе. Я надеюсь, что эти советы помогут вам начать изучение лучшего из того, что могут предложить Python и R.
Изначально я был чистым математиком, затем стал психометриком и специалистом по анализу данных. Я с энтузиазмом отношусь к применению всех этих дисциплин к сложным человеческим вопросам. Я также помешан на кодировании и большой поклонник японских ролевых игр. Найдите меня в LinkedIn или Twitter. Также посетите мой блог на drkeithmcnulty.com.