经管之家App
让优质教育人人可得
立即打开
全部版块
我的主页
›
论坛
›
数据科学与人工智能
›
数据分析与数据科学
›
python论坛
让R与Python共舞
楼主
wyyhzc
31374
25
收藏
2013-03-24
转载:
http://ices01.sinaapp.com/?p=129
R(又称R语言)是一款开源的跨平台的数值统计和数值图形化展现 工具。通俗点说,R是用来做统计和画图的。R拥有自己的脚本语言和大量的统计、图形库(得益于开源社区),这让她看起来既美又实用。与其他同类软件(如 SPSS)相比,R的特点是纯命令行的,这倒也好,我们更应该把注意力放在数据本身,而非统计工具的UI。
R虽说有一套自己的语言,还挺完备,但她最专业的还是做统计和画图,而像连接数据库、文本处理、文件操作等这些脏活可不能委屈R来干哪,这些得有其 他语言来负责,我的选择是咱最熟悉的、做这些脏活最棒的Python。那接下来的问题很清楚了,R和Python如何一起工作?拍拍脑袋,想到可能有下面 几种办法:
1. R和Python只共享文件,Python把源数据处理干净,生成格式化的文件放在预定的目录下,做个定时器让R去读文件,最终输出统计结果和图表。
这种做法一定程度上可行,除了做定时器外,还可以让Python即时执行”rscript”命令调用R脚本来工作,只是这种办法限制太大,只能够交换文件,Python不能对R进行精确的控制。
2. 让Python直接调用R的函数,R是开源项目,肯定会有一些第三方库实现Python与R互通。
果然,我找到了
rpy2
,可以实现使用python读取R的对象、调用R的方法以及Python与R数据结构转换等。实际上除了Python,其他语言与R互通的第三方包也大大的有。
最后我选择第2种方法,来让R与Python共舞。
模块 rpy2.robjects 是rpy2对R的一个高级封装,该模块里包含了一个r对象和一系列的R数据结构。使用rpy2的大多数情况,只需要跟这个模块打交道即可。rpy2的安装 在此不多讲了,有兴趣的同学看文档去,直接体验一下R如何与Python无缝整合吧。
了解r实例
r实例是指rpy2.robjects.r,它是在Python中的嵌入式R进程,把r当作从python走向R的通道来看就可以了。通过r实例,我们可以读取R的内置变量、调用R的函数、甚至,直接把它当作R的解析器来用。
访问R的对象
在R的命令行中,我们直接输入对象名来访问R的内置对象,如pi、letters:
在R控制台中访问R对象
而使用r实例,python访问R对象也很简单,而且方法很多:
在python中访问R对象
在这段代码中,我们用了三种方式来访问R对象,把r实例当作字典,把r实例当作方法,把r实例当 作一个类对象(真是神喻呀~)。在实际中,使用哪一种方式要因习惯而异,我喜欢的方法是使用第三种,把r实例当作自己人,直接使用”.”来访问R对象。但 这种方法有一个缺陷,就是不能访问带名字空间的R对象或函数,而其他两种方式是可以的,这点将在随后说明。
调用R函数
通过r实例,我们可以轻易地实现用Python调用R的函数。下面我们分别在R控制台和python命令行下读一个数据文件并画一张点图。
R控制台读取文件画点图
代码解读:
data.csv 的内容就是上面代码的3到7的内容。
data = read.table(‘data.csv’) :把文件读进一个数据框变量data中。
mtx = data.matrix(data):把data转变成矩阵。
dotchart(mtx)用矩阵的数据画点图。
结果如下:
接下来用python来做一遍同样的事情,我们之前了解到,使用r实例可以直接访问R对象,还可 以直接调用R的函数,其实在Python看来,对象和函数是相同的东西,函数也是一种对象罢了。现在来试一下调用”read.table()”函数读入一 个数据文件data.csv:
出错了!怎么回事?在上面我提到过了,使用“.”引用的方式不能访问带有名字空间的R对象和函数,read.table 是表示在read包下面的table函数,通过”.”的形式调用失败,必须要用字典的方式或参数的方式来获得:
这段代码得到的结果与在R控制台下画点图的效果是一样的。最后一行 r.dotchart(mtx)是直接通过”.”来调用R的函数dotchart的,在没有名实空间的情况下,是正常的。如果你为了避免太多不可控制的出 错机会,你可以统一地使用字典的方式来访问R对象和方法,这是最保险的方法,虽然我个人认为看起来有点别扭。
r实例就是一R控制台
其实r实例就是一个可交互的R控制台,只不过交互对象是Python与R罢了,为了证明r实例具有R控制台的特性,来做个实验,写一串R脚本,作为Python一个字符串变量的内容,把该字符串传给r实例,然后把r实例当作方法来调用:
出来的结果这样:
注意,把r实例当作控制台,只能够通过r(r代码)的方式来使用r实例,字典的方式行不通。
加载自定义函数
在实际应用中,使用R语言来编写自己的函数同样是不可避免的,在R控制台中,可以使用source(‘script_path’)的方法来加载自定 义R脚本。而在Python中使用自己义R脚本中的函数也同样方便:使用r.source(‘script_path’)即可把自定义函数加载到全局环境 中,再使用r.自定义方法名就可以实现调用,我就是这样做的,在此不再详述,同学们自己动手玩一下。
R Vector与Python list
向量(Vector)是R的一个最重要的也是最常用的数据类型,可以理解为一个二维数据,对应Python的list。在R控制台中,声明一个变 量:“x <- 1”,X会被声明成一个向量,而其第一个值是1。R常常用c()函数来声创建一个由多个值组成的向量,例如c(1,2,3,4)。Python要与R打交 道,除了访问R对象和调用R函数,还有就是要学会如何转换常见的数据类型。
rpy2提供了几个类,供我们把Python的list转换成R的Vector。分别是 robjects.IntVector,robjects.Boolvector,robjects.StringVector,robjects.FloatVector. 以IntVector为例,将Python的list转换成R的Vector:robjects.IntVector([1,2,3,4,5]),毕!
下面来使用刚学到的类型转换知识画上一个例子的散点图来结束此次体验:
还在继续…..
rpy2提供的不仅仅是上面这些,上面的知识只是rpy2所提供的20%,但是已经足以解决80%的问题。rpy2还提供了更低级的API,你可以做更多的事情,例如你可以实现另一个robjects对象来支持使用”.”来访问带名字空间的对象和函数。更多的知识,请移步
官方文档
。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
全部回复
沙发
qoiqpwqr
2013-3-25 13:02:45
其实安装好rpy2包似乎更麻烦一点
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
藤椅
wuheshiss100
2013-3-25 16:17:30
好,先学习一下
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
板凳
ltx5151
2013-3-26 09:18:46
推荐一个在performance更加出色的,PyperR。
http://www.webarray.org/softwares/PypeR/
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
报纸
huangfanchang
2014-9-3 00:28:02
ding
kankan
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
地板
woaiwangqiao
2014-9-8 17:46:13
挺一下,好厉害
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
点击查看更多内容…
7楼
xucaifeng66
2014-9-17 18:32:39
感谢分享,学习了
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
8楼
随处看看
2014-11-1 08:57:04
首先安装就是个问题
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
9楼
狂热的爱好者
2014-11-2 13:29:44
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
10楼
注册吧
2014-11-3 10:56:05
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
11楼
Itachix
2014-11-9 06:01:14
好东西啊,多谢楼主!!
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
12楼
北海之鲲123
2014-11-9 12:37:21
先mark一下,将来肯定用的着
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
13楼
qfnu2009
2014-11-15 16:57:36
好。。学习学习
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
14楼
zombiemummy
2014-11-18 10:38:53
安装非常头疼,试了好几次也无法正常安装。看了文档也没看明白,好像在安装过程中要加入R的安装路径作为参数?能不能请楼主教一下安装方法啊。我用的是Python3.4.2 和R 3.1.2 。本版似乎无法悬赏,如果您需要币的话我也可以提供一些微薄的反馈。谢谢
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
15楼
woodynicolas
2014-12-6 06:32:15
多谢楼主分享!
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
16楼
chengzhifu2013
2015-3-27 11:33:38
python有没有破解版的,如果有可否提供链接?谢谢了
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
17楼
1304120526
2015-3-29 12:25:46
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
18楼
Jancy-lover
2015-4-2 11:41:04
好棒,内容高大上的,膜拜中。。。求指教:
1)本人统计基础,这两种语言更适合学习?
2)LZ能提供些学习资源吗?感谢。。。
3)一般把这些语言学会,操作熟练,至少要多久呀?盲目中。。。。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
19楼
xjjdlut
2015-4-3 09:43:42
Mark一下。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
20楼
soccy
2015-4-6 19:49:54
却一个类似Rcpp的神器
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
21楼
hairyantai
2015-4-15 21:08:19
现在是大数据时代,我们现在急需数据分析师。我们为数据分析师提供有偿的兼职服务。只要你熟悉任何一种数据分析算法、或者优化算法,熟悉任何一种数据分析工具,不限专业、我们都能为您提供相应的职位,获得丰厚的薪水。我们诚邀您的加入,联系QQ:1908955292,QQ群: 446868201添加时请写下你的特长。Python、Hadoop、DEA、SPSS、SAS、Matlab、QlikView、R、Amos、Latex、Eviews、Lisrel、gis、Stata等等。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
22楼
14HBjpttxs
2015-4-16 06:53:07
牛!!!
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
23楼
karty123
2015-9-7 16:06:04
图片都不行了
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
24楼
南农小硕
2015-9-20 17:25:59
qoiqpwqr 发表于 2013-3-25 13:02
其实安装好rpy2包似乎更麻烦一点
我安装时候好像是路径出问题了,你有装好了吗请问
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
25楼
Carson~~
2015-11-17 12:51:59
好好学习一下,灰常酷
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
26楼
梦回上古
2015-11-26 17:04:29
挺好的。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
相关推荐
让R与Python共舞
数据科学界华山论剑:R与Python巅峰对决
【转载R-Python】长篇巨献|数据科学界华山论剑:R与Python巅峰对决
r与Python学哪个比较好
数据挖掘工业界,R和Python到底谁用的比较多?R与python各自的优缺点
【学习笔记】求书! 吴喜之编著的《多元统计分析—R与Python的实现》
【学习笔记】求个多元统计分析-R与python的实现 相关例题数据
【学习笔记】求吴喜之教授新书 多元统计分析R与Python的实现
【学习笔记】多元统计分析-R与python的实现
您应该不再担心R与Python或其他工具
栏目导航
python论坛
行为经济学与实验经济学
休闲灌水
经管在职博
真实世界经济学(含财经时事)
站务与外事
热门文章
2026“课题申报”抢跑号角的已吹响!国社科 ...
CDA 认证考试大纲 2025 重磅更新:一二级考 ...
英文书籍
英文书籍
中国移动:智能体互联网技术白皮书2025
国家级都市圈谁在领跑:2025华高莱斯产城瞭 ...
超越普里瓦洛夫无穷乘积与它对解析函数的应 ...
超越普里瓦洛夫数项级数卷
您提出了一个足以获得诺贝尔奖的核心概念— ...
2012-2024年上市公司工业机器人渗透率数据集 ...
推荐文章
10月重磅来袭|《打造Coze/Dify专属学术智能 ...
高校老师和学生都在偷偷上的智能体课,到底 ...
最快1年拿证,学费不足5W!热门美国人工智能 ...
关于如何利用文献的若干建议
关于学术研究和论文发表的一些建议
关于科研中如何学习基础知识的一些建议 (一 ...
一个自编的经济学建模小案例 --写给授课本科 ...
AI智能体赋能教学改革: 全国AI教育教学应用 ...
2025中国AIoT产业全景图谱报告-406页
关于文献求助的一些建议
说点什么
分享
微信
QQ空间
QQ
微博
扫码加好友,拉您进群
各岗位、行业、专业交流群