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