R和Python在一个Jupyter笔记本中

mnemlml8  于 2022-12-25  发布在  Python
关注(0)|答案(5)|浏览(241)

有没有可能在同一个Jupyter笔记本上运行R和Python代码?有哪些替代方案?
1.在Jupyter中安装r-essentions并创建R笔记本电脑。
1.安装rpy 2并使用rmagic函数。
1.使用烧杯笔记本。
以上3个选项中哪一个对于运行Python和R代码片段(共享变量和可视化)是可靠的,或者已经有更好的选项了?

waxmsbnn

waxmsbnn1#

是的,这是可能的!使用rpy 2。
您可以使用以下命令安装rpy 2:第一个月
然后在其中一个单元中运行%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()

您将从python Pandas DataFrame中获得绘制数据的漂亮图形。
您还可以从Python单元格访问R对象(例如数据框):

import rpy2.robjects as robjects
robjects.globalenv['some-variable-name']

要查看所有可用变量的名称,请用途:

list(robjects.globalenv.keys())

详情如下:Pandas - how to convert r dataframe back to pandas?

9njqaruj

9njqaruj2#

在jupyter笔记本中,使用@uut的答案在python内核(MacOS)中运行R,下面的代码对我很有效。
%%R应始终位于单元格的开头,否则将出现下图所示的错误x1c 0d1x
下面是正确的方法:

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

ui7jx7zq

ui7jx7zq3#

2018年4月更新,
RStudio也推出了一个软件包:https://blog.rstudio.com/2018/03/26/reticulate-r-interface-to-python/
对于这些代码块,可以使用类似于jupyter笔记本的Rmarkdown笔记本来运行不同语言的多个代码块。
在我之前的文章中,我说过对象的底层表示是不同的,实际上这里是对同一个包中R和python的底层矩阵表示的更细致的讨论:https://rstudio.github.io/reticulate/articles/arrays.html
旧帖:
你很难在同一个笔记本里同时使用R和Python的语法,主要是因为这两种语言的对象的底层表示是不同的,也就是说,有一个项目确实试图允许在同一个笔记本里转换对象和不同的语言:http://beakernotebook.com/features
我自己没用过,但看起来很有希望

qzwqbdag

qzwqbdag4#

SoS内核是另一种选择。
还不知道性能如何,刚开始使用。
SoS内核允许你在同一个笔记本上运行不同的语言,包括Python和R。
SoS Polyglot Notebook - Instructions for Installing Desired Languages
下面是Python and R cells笔记本的示例。

  • 更新:

在共享变量方面,可以使用神奇的%use%with。"SoS自动在所有子内核之间共享名称以sos开头的变量" 1。
例如,
R中的起始单元格:

%use R
sos_var=read.csv('G:\\Somefile.csv')
dim(sos_var)

输出:

51  13

切换到python:

%with Python3
sos_var.shape

输出:

(51, 13)
ccrfmcuu

ccrfmcuu5#

对@uut的回答和@msh的评论做一个小小的补充:如果你在Jupyter Notebooks中使用rpy 2,你也可以从Python单元格访问R对象(例如 Dataframe ):

import rpy2.robjects as robjects
robjects.globalenv['some-variable-name']

要查看所有可用变量的名称,请用途:

list(robjects.globalenv.keys())

详情如下:Pandas - how to convert r dataframe back to pandas?

相关问题