网络上常常看到有人问数据分析是学习Python好仍是R语言好,还有一些争论Python好仍是R好的文章。每次看到这样的文章我都会想到李舰和肖凯的《数据科学中的R语言》,书中一直强调,工具不分好坏,重要的是解决问题的思路,就算是简单的excel,也能应付数据分析中的大部分问题。再者Python和R原本就没有什么好对比的,一门是计算机工程语言,一门是统计语言,只有将二者结合起来,才能发挥更大的威力,不是吗,对于数据分析的人来讲,难道不是两样都要掌握的吗?html
rpy2是Python调用R程序的模块,旨在方便Python调用R中的相关函数,而不须要先将数据写入txt再传给R来分析,从而能够作到全流程自动化。在pandas 0.18的模块中也添加了rpy2的支持,进而更方便沟通了Python和R的数据流转,构建数据分析的生态系统。python
rpy2的安装仍是比较麻烦的,试了不少方法,百度了不少网页最终安装成功,作些笔记备忘。python3.x
个人安装环境是:网络
下载并安装MRO,安装对应的并行数学计算库(可选)。下载地址是:
https://mran.revolutionanalytics.com/download/python2.7
下载地址是:
https://www.continuum.io/downloads函数
这是比较重要的通常,不少安装失败的缘由就是没有很好配置环境变量。
1. 将R目录添加至path环境变量
path:D:\Program Files\Microsoft\MRO\R-3.2.3\bin\x64;
2. 将R.dll添加至path环境变量
path:D:\Program Files\Microsoft\MRO\R-3.2.3\bin\x64\R.dll;
3. 设置R_HOME环境变量
R_HOME:D:\Program Files\Microsoft\MRO\R-3.2.3
4. 设置R_USER环境变量
R_USER:Administrator
R_USER就是你电脑的用户名,若是没有设置过用户名就是Administrator,能够经过cmd命令行输入 net user
查看。工具
为何要下载非官方版本的rpy2我也不知道,反正我使用pip install ryp2
没有成功,缺乏对应的编译环境,百度出来的网页不少都是说使用非官方版本的rpy2.
下载地址是:http://www.lfd.uci.edu/~gohlke/pythonlibs/#rpy2 这是python下包的专用地址
须要下载版本和平台都相对应的whl包,我下的是rpy2-2.9.4-cp36-cp36m-win_amd64.whl,而后使用 pip install rpy2-2.9.4-cp36-cp36m-win_amd64.whl
安装便可。性能
参考 让R与Python共舞 和 python中调用R学习
import rpy2.robjects as robjects # 此时,有三种方法调用R对象 # 第一种 robjects.r['pi'] # 第二种 robjects.r('pi') # 这种方法从某种程度上讲是万能的,由于能够将任意大小和长度的R代码写成一个python字符串,以后经过robjects.r('Rcode')调用执行 第三种 robjects.r.pi # 这种方法对于名称中有“点号”的变量会出问题,好比data.frame/read.csv等,因此推荐使用第一种方法
# creat an R function robjects.r(''' f <- function(r){pi * r} ''') robjects.r['f'](3) # internal function in R robjects.r['ls']() # another internal function l = robjects.r['letters'] len(l) robjects.r['paste'](l, collapse = '-') # an alternative way of getting 'paste' function in R # eval the R code coder = 'paste(%s, collapse = "-")' % (l.r_repr()) robjects.r(coder)
具体参考 pandas官方文档–rpy2 / R interface网站
具体参考 pandas官方文档–Comparison with R / R libraries
列出了实现相同功能的pandas和R的代码,颇有启发性。
同时也说明,有想法,用什么工具实现都无所谓,纠结要选python仍是R确实是舍本逐末了。若是时间不够,精通其中的一门语言,另外一门语言可以掌握简单的使用,也就够了。
之后有事时间再详细写写pandas调用R的部分,以它们之间数据来回传输的原理和注意事项。
我把下载的包放到了d盘的programdata