python调用r语言函数_rpy2库 | 在jupyter中调用R语言代码

在数据分析中,Python和R各有千秋,虽然Python或R都能在数据分析打通关,从采集、清洗(预处理)、分析、可视化,但是在不同的环节,不同的语言易用程度不同。Python胜在干脏活累活,诸如数据采集、数据清洗、机器学习等;而R语言胜在统计分析、可视化等。所以,如果你正好Python和R都入门了,可以考虑两者结合。那么就会遇到今天的问题-如何在jupyter中使用R语言代码?

rpy2包

rpy2包首先是Python包,ta衔接了Python和R,通过rpy2可以运行R语言相关代码、函数、包。

在Jupyter notebook中主要有两种情况

单元格中以Python为主,可以插入

R的代码字符串

单个的单元格要么只有

R代码,要么只有

Python代码

遇到这类问题,各位的电脑要确保

电脑已经安装了Python和R

已安装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)

1b54f709-7b8a-499f-8f42-51b76eafb91d.png

准备一个R代码r_code,该代码会生成R语言的tibble数据类型(R语言中的一种data frame)。

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

在本例中,使用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 pandas2ri

pandas2ri.activate()

#准备iris

robjects.r.data('iris')

#导入iris

iris = robjects.r['iris']

iris

b4856c7b-36aa-488a-8d6f-fe3655e59a43.png

调用R语言包

rpy2.robjects.packages.importr('R包名')

R语言中的readr包有read_csv()函数,可以读取csv文件。

from rpy2.robjects.packages import importr

from rpy2.robjects import pandas2ri

pandas2ri.activate()

#导入R语言中的readr包

readr = importr("readr")

#使用readr包中的read_csv()函数

mtcars = readr.read_csv("mtcars.csv")

mtcars.head()

fd995108-c6ba-4445-85f4-65e4d1dcdf01.png

Cell只运行R代码

上面的几个章节中,每个cell中代码均为Python和R的混用,如果在Cell中只运行R代码,

可以先单独在一个cell中运行

%load_ext rpy2.ipython,

在另外一个cell中使用

%%R声明本cell中使用的是R代码。

%load_ext rpy2.ipython

%%R

library(ggplot2)

ggplot(iris, aes(x=Sepal.Length,

y=Sepal.Width,

color=Species))+

geom_point()

7d525bbd-bc30-4e86-a1d6-3591821132a4.png

%%R -h 550 -w 800 #设置宽、高

library(ggplot2)

ggplot(iris, aes(x=Sepal.Length,

y=Sepal.Width,

color=Species))+

geom_point()

ecaa9af1-9304-47bb-90e3-f472fa564fef.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值