有没有可能在同一个Jupyter笔记本上运行R和Python代码?有哪些替代方案?1.在Jupyter中安装r-essentions并创建R笔记本电脑。1.安装rpy 2并使用rmagic函数。1.使用烧杯笔记本。以上3个选项中哪一个对于运行Python和R代码片段(共享变量和可视化)是可靠的,或者已经有更好的选项了?
waxmsbnn1#
是的,这是可能的!使用rpy 2。您可以使用以下命令安装rpy 2:第一个月然后在其中一个单元中运行%load_ext rpy2.ipython(只需运行一次)。现在您可以执行以下操作:Python细胞:
%load_ext rpy2.ipython
# 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?
9njqaruj2#
在jupyter笔记本中,使用@uut的答案在python内核(MacOS)中运行R,下面的代码对我很有效。%%R应始终位于单元格的开头,否则将出现下图所示的错误x1c 0d1x下面是正确的方法:
%%R
此外,%load_ext rpy2.ipython应该在%%R之前,因此将其放在其上方的不同单元格中,如图所示。
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我自己没用过,但看起来很有希望
qzwqbdag4#
SoS内核是另一种选择。还不知道性能如何,刚开始使用。SoS内核允许你在同一个笔记本上运行不同的语言,包括Python和R。SoS Polyglot Notebook - Instructions for Installing Desired Languages下面是Python and R cells笔记本的示例。
在共享变量方面,可以使用神奇的%use和%with。"SoS自动在所有子内核之间共享名称以sos开头的变量" 1。例如,R中的起始单元格:
%use
%with
%use R sos_var=read.csv('G:\\Somefile.csv') dim(sos_var)
输出:
51 13
切换到python:
%with Python3 sos_var.shape
(51, 13)
ccrfmcuu5#
对@uut的回答和@msh的评论做一个小小的补充:如果你在Jupyter Notebooks中使用rpy 2,你也可以从Python单元格访问R对象(例如 Dataframe ):
5条答案
按热度按时间waxmsbnn1#
是的,这是可能的!使用rpy 2。
您可以使用以下命令安装rpy 2:第一个月
然后在其中一个单元中运行
%load_ext rpy2.ipython
(只需运行一次)。现在您可以执行以下操作:
Python细胞:
R细胞:
您将从python Pandas DataFrame中获得绘制数据的漂亮图形。
您还可以从Python单元格访问R对象(例如数据框):
要查看所有可用变量的名称,请用途:
详情如下:Pandas - how to convert r dataframe back to pandas?
9njqaruj2#
在jupyter笔记本中,使用@uut的答案在python内核(MacOS)中运行R,下面的代码对我很有效。
%%R
应始终位于单元格的开头,否则将出现下图所示的错误x1c 0d1x下面是正确的方法:
此外,
%load_ext rpy2.ipython
应该在%%R
之前,因此将其放在其上方的不同单元格中,如图所示。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
我自己没用过,但看起来很有希望
qzwqbdag4#
SoS内核是另一种选择。
还不知道性能如何,刚开始使用。
SoS内核允许你在同一个笔记本上运行不同的语言,包括Python和R。
SoS Polyglot Notebook - Instructions for Installing Desired Languages
下面是Python and R cells笔记本的示例。
在共享变量方面,可以使用神奇的
%use
和%with
。"SoS自动在所有子内核之间共享名称以sos开头的变量" 1。例如,
R中的起始单元格:
输出:
切换到python:
输出:
ccrfmcuu5#
对@uut的回答和@msh的评论做一个小小的补充:如果你在Jupyter Notebooks中使用rpy 2,你也可以从Python单元格访问R对象(例如 Dataframe ):
要查看所有可用变量的名称,请用途:
详情如下:Pandas - how to convert r dataframe back to pandas?