python|rpy2库 | 在jupyter中调用R语言代码

在数据分析中,Python和R各有千秋,虽然Python或R都能在数据分析打通关,从采集、清洗(预处理)、分析、可视化,但是在不同的环节,不同的语言易用程度不同。Python胜在干脏活累活,诸如数据采集、数据清洗、机器学习等;而R语言胜在统计分析、可视化等。所以,如果你正好Python和R都入门了,可以考虑两者结合。那么就会遇到今天的问题-如何在jupyter中使用R语言代码?
rpy2包 rpy2包首先是Python包,ta衔接了Python和R,通过rpy2可以运行R语言相关代码、函数、包。
【python|rpy2库 | 在jupyter中调用R语言代码】在Jupyter notebook中主要有两种情况

  1. 单元格中以Python为主,可以插入R的代码字符串
  2. 单个的单元格要么只有R代码,要么只有Python代码
遇到这类问题,各位的电脑要确保
  1. 电脑已经安装了Python和R
  2. 已安装rpy2包
安装rpy2包pip3 install rpy2
import rpy2.robjects as robjects from rpy2.robjects import pandas2ri#R代码运行会尽量以DataFrame显示 pandas2ri.activate()#运行R代码 robjects.r('R代码字符串')

运行R代码
rpy2.robjects.r('R代码字符串')

rpy2.robjects.r()函数会识别 R代码字符串, 并将其执行。
import rpy2.robjects as robjects from rpy2.robjects import pandas2ri#直接声明,data frame强制转为DataFrame pandas2ri.activate()#R代码 r_code = """ library(dplyr)text <- c("Because I could not stop for Death -", "He kindly stopped for me -", "The Carriage held but just Ourselves -", "and Immortality")text_df <- tibble(docid=1:4, text=text) text_df """#运行R代码 robjects.r(r_code)

python|rpy2库 | 在jupyter中调用R语言代码
文章图片

  1. 准备一个R代码r_code,该代码会生成R语言的tibble数据类型(R语言中的一种data frame)。
  2. robjects.r(r_code) 运行R代码(字符串)
  3. 在本例中,使用pandas2ri.activate()强制声明,在Python中将变量text_df以pandas.DataFrame显示
调用R数据集
rpy2.robjects.r.data('R的数据集名')

调用R的数据集
import rpy2.robjects as robjects

  • robjects.r.data('R数据集名') 准备R数据集,此时Python并没有显示该数据集,可以理解为准备数据
  • robjects.r['R数据集名'] 导入R的数据集
import rpy2.robjects as robjects from rpy2.robjects import pandas2ripandas2ri.activate()#准备iris robjects.r.data('iris') #导入iris iris = robjects.r['iris'] iris

python|rpy2库 | 在jupyter中调用R语言代码
文章图片

调用R语言包
rpy2.robjects.packages.importr('R包名')

R语言中的readr包有read_csv()函数,可以读取csv文件。
from rpy2.robjects.packages import importr from rpy2.robjects import pandas2ripandas2ri.activate()#导入R语言中的readr包 readr = importr("readr") #使用readr包中的read_csv()函数 mtcars = readr.read_csv("mtcars.csv") mtcars.head()

python|rpy2库 | 在jupyter中调用R语言代码
文章图片

Cell只运行R代码 上面的几个章节中,每个cell中代码均为Python和R的混用,如果在Cell中只运行R代码,
  1. 可以先单独在一个cell中运行 %load_ext rpy2.ipython,
  2. 在另外一个cell中使用%%R声明本cell中使用的是R代码。
%load_ext rpy2.ipython

%%Rlibrary(ggplot2)ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species))+ geom_point()

python|rpy2库 | 在jupyter中调用R语言代码
文章图片

%%R -h 550 -w 800#设置宽、高library(ggplot2)ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species))+ geom_point()

python|rpy2库 | 在jupyter中调用R语言代码
文章图片

近期文章
[更新] Python网络爬虫与文本数据分析 七夕礼物 | 全网最火的钉子绕线图制作教程读完本文你就了解什么是文本分析文本分析在经管领域中的应用概述 综述:文本分析在市场营销研究中的应用plotnine: Python版的ggplot2作图库 小案例: Pandas的apply方法 stylecloud:简洁易用的词云库 用Python绘制近20年地方财政收入变迁史视频 Wow~70G上市公司定期报告数据集漂亮~pandas可以无缝衔接Bokeh YelpDaset: 酒店管理类数据集10+G 后台回复关键词【20200818】获取本文代码和数据

    “分享”和“在看”是更好的支持!

    推荐阅读