R和Python在一个Jupyter笔记本中

Sai*_*olu 41 python r ipython python-2.7 jupyter-notebook

是否可以在同一个Jupyter笔记本中运行R和Python代码.有哪些替代品?

  1. 在Jupyter中安装r-essentials并创建R笔记本.
  2. 安装rpy2并使用rmagic函数.
  3. 使用烧杯笔记本.

以上3个选项中哪一个可靠运行Python和R代码片段(共享变量和可视化)或者是否有更好的选择?

uut*_*uut 41

对的,这是可能的!使用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]
})
Run Code Online (Sandbox Code Playgroud)

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()
Run Code Online (Sandbox Code Playgroud)

而且你会得到一个漂亮的数字来绘制python Pandas DataFrame中的数据.

  • 这太棒了!请给自己买一杯咖啡——由我来。 (4认同)
  • 当我尝试这个时,我收到一条错误消息:库错误(ggplot2):没有名为“ggplot2”的包 (2认同)

Abh*_*mar 14

使用@uut的答案在python内核(在MacOS中)的jupyter笔记本中运行R,以下内容对我有用.

%%R应始终位于单元格的开头,否则您将收到错误,如下图所示语法错误,如果%% R不在单元格的顶部

以下是正确的方法:在python内核中调用R的正确方法

%load_ext rpy2.ipython应该在之前%%R将其放在其上方的不同单元中,如图所示.


rm1*_*104 6

SoS 内核是另一种选择。

不知道它的性能如何,刚开始使用它。

SoS 内核允许您在同一笔记本中运行不同的语言,包括 Python 和 R。

SoS 多语言笔记本 - 安装所需语言的说明

这是一个带有Python 和 R 单元格的笔记本示例。


*更新:

在共享变量方面,可以使用魔法%use%with. “SoS 自动在所有子内核中共享名称以sos开头的变量” 1

前任。

R中的起始单元格:

%use R
sos_var=read.csv('G:\\Somefile.csv')
dim(sos_var)
Run Code Online (Sandbox Code Playgroud)

输出:

51  13
Run Code Online (Sandbox Code Playgroud)

切换到python:

%with Python3
sos_var.shape
Run Code Online (Sandbox Code Playgroud)

输出:

(51, 13)
Run Code Online (Sandbox Code Playgroud)


All*_*ang 5

更新于2018年4月,

RStudio还推出了一个软件包:https : //blog.rstudio.com/2018/03/26/reticulate-r-interface-to-python/

为此,可以使用R降价笔记本(类似于jupyter笔记本)以不同的语言运行多个代码块。

在上一篇文章中,我说过对象的基本表示形式是不同的。实际上,这里是来自同一包的R和python的底层矩阵表示的更细致的讨论:https : //rstudio.github.io/reticulate/articles/arrays.html

旧帖子:

您将很难在同一笔记本中同时使用R和Python语法,这主要是因为两种语言中对象的基本表示形式不同。就是说,有一个项目确实尝试允许在同一笔记本中转换对象和不同语言:http : //beakernotebook.com/features

我自己没有用过,但是看起来很有希望