R и Python в одном ноутбуке Jupyter
Возможно ли запустить код R и Python в одном ноутбуке Jupyter. Каковы все альтернативы?
- Установите r-essentials и создайте R-ноутбуки в Jupyter.
- Установите rpy2 и используйте функции rmagic.
- Используйте записную книжку.
Какой из вышеперечисленных 3 вариантов является надежным для запуска фрагментов кода Python и R (обмена переменными и визуализациями) или есть ли более эффективный вариант?
Ответы
Ответ 1
Да, это возможно! Используйте rpy2.
Вы можете установить rpy2 с помощью: pip install rpy2
Затем запустите %load_ext rpy2.ipython
в одной из ваших ячеек. (Вы должны запустить это только один раз.)
Теперь вы можете сделать следующее:
Ячейка Python:
# enables the %%R magic, not necessary if you've already done this
%load_ext rpy2.ipython
import pandas as pd
df = pd.DataFrame({
'cups_of_coffee': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
'productivity': [2, 5, 6, 8, 9, 8, 0, 1, 0, -1]
})
R ячейка:
%%R -i df -w 5 -h 5 --units in -r 200
# import df from global environment
# make default figure size 5 by 5 inches with 200 dpi resolution
install.packages("ggplot2", repos='http://cran.us.r-project.org', quiet=TRUE)
library(ggplot2)
ggplot(df, aes(x=cups_of_coffee, y=productivity)) + geom_line()
И вы получите свою симпатичную фигуру, изображающую данные из питона Pandas DataFrame.
Ответ 2
Используя ответ @uut для запуска R в блокноте jupyter в ядре python (в MacOS), у меня сработало следующее.
%%R
всегда должен быть в начале ячейки, иначе вы получите ошибку, как показано на рисунке ниже ![syntax error if %%R not at the top of the cell]()
Вот правильный путь: ![Right way to invoke R within python kernel]()
Также %load_ext rpy2.ipython
должен предшествовать %%R
поэтому поместите его в другую ячейку над ним, как показано на рисунках.
Ответ 3
ОБНОВЛЕНИЕ Апрель 2018,
RStudio также выпустила пакет: https://blog.rstudio.com/2018/03/26/reticulate-r-interface-to-python/
для которого возможно запустить несколько фрагментов кода на разных языках, используя блокнот R markdown, который похож на блокнот jupyter.
В моем предыдущем посте я говорил, что базовое представление объектов отличается. На самом деле, здесь приведено более подробное обсуждение базового матричного представления R и python из одного пакета: https://rstudio.github.io/reticulate/articles/arrays.html.
Старый пост:
Вам будет сложно использовать синтаксис R и Python в одной и той же записной книжке, в основном потому, что базовое представление объектов на двух языках различно. Тем не менее, есть проект, который пытается разрешить преобразование объектов и разных языков в одной записной книжке: http://beakernotebook.com/features
Я не использовал это сам, но это выглядит многообещающим
Ответ 4
Ядро SoS - еще один вариант.
Пока не знаю, насколько хорошо он работает, просто начал его использовать.
Ядро SoS позволяет вам запускать разные языки в одной и той же записной книжке, включая Python и R.
SoS Polyglot Notebook - Инструкция по установке желаемых языков
Вот пример ноутбука с ячейками Python и R.
*Обновить:
С точки зрения разделения переменных, можно использовать магию %use
и %with
. Msgstr "SoS автоматически делит переменные с именами, начинающимися с sos, между всеми подядрами" 1.
Ex.
Начальная ячейка в R:
%use R
sos_var=read.csv('G:\\Somefile.csv')
dim(sos_var)
Выход:
51 13
Переход на питон:
%with Python3
sos_var.shape
Выход:
(51, 13)
Ответ 5
У меня проблема с rpy2. Я хочу использовать функцию R (CRAN EMSC) на Python. Результатом этой функции является матрица. Я не могу повторно использовать результат матрицы на Python. Как я могу сделать?
введите описание изображения здесь. Я могу отобразить результат на матрице R, но я не могу использовать эту матрицу с Python. У тебя есть идея?
Спасибо
никола
Ответ 6
Я бы не рекомендовал использовать два языка в одном ноутбуке. Вместо этого вы можете упорядочить код R и Python на уровне проекта, подключив их к базе данных ввода\вывода. Инструменты данных, такие как DVC, могут помочь вам в этом.
В этом блоге вы можете найти примеры кода: Рекомендации по организации кода Python и R в проектах ML