网络上经常看到有人问数据分析是学习Python好还是R语言好,还有一些争论Python好还是R好的文章。每次看到这样的文章我都会想到李舰和肖凯的《数据科学中的R语言》,书中一直强调,工具不分好坏,重要的是解决问题的思路,就算是简单的excel,也能应付数据分析中的大部分问题。再者Python和R本来就没有什么好对比的,一门是计算机工程语言,一门是统计语言,只有将两者结合起来,才能发挥更大的威力,不是吗,对于数据分析的人来说,难道不是两样都要掌握的吗?

rpy2是Python调用R程序的模块,旨在方便Python调用R中的相关函数,而不需要先将数据写入txt再传给R来分析,从而可以做到全流程自动化。在pandas 0.18的模块中也添加了rpy2的支持,进而更方便沟通了Python和R的数据流转,构建数据分析的生态系统。

rpy2的安装还是比较麻烦的,试了很多方法,百度了很多网页最终安装成功,做些笔记备忘。

我的安装环境是:

  • win7_64bit
  • python3.5_64位,使用的是Anaconda发行版。Anaconda发行版集成了很多Python的有用的数据分析模块,其使用界面和MATLAB很相似,用起来很方便,而且还很方便虚拟出不同版本的Python环境,对那些既想用python2.7,又想用python3.x的同学来说是很好的选择。
  • R使用的是Revolution R Open 3.2.3_64bit,这是Revolution R现在已经被微软收购了,改为MRO。MRO和CRAN的R没有什么区别,只是改进了多进程并行计算的性能,比原生的R确实有一定的性能提升。当然需要MRO网站上对应的数学计算库Math Library,这个在Revolution R Open的下载界面有。

1.下载并安装MRO

下载并安装MRO,安装对应的并行数学计算库(可选)。下载地址是: 
https://mran.revolutionanalytics.com/download/

2.下载安装Anaconda

下载地址是: 
https://www.continuum.io/downloads

3.配置R的环境变量

这是比较重要的一般,很多安装失败的原因就是没有很好配置环境变量。 
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查看。

4.下载非官方版本的rpy2

为什么要下载非官方版本的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安装即可。

5.python调用R

参考 让R与Python共舞 和 python中调用R

  1. import rpy2.robjects as robjects
  2. # 此时,有三种方法调用R对象
  3. # 第一种
  4. robjects.r['pi']
  5. # 第二种
  6. robjects.r('pi')
  7. # 这种方法从某种程度上讲是万能的,因为可以将任意大小和长度的R代码写成一个python字符串,之后通过robjects.r('Rcode')调用执行
  8. 第三种
  9. robjects.r.pi
  10. # 这种方法对于名称中有“点号”的变量会出问题,比如data.frame/read.csv等,所以推荐使用第一种方法
  1. # creat an R function
  2. robjects.r('''
  3. f <- function(r){pi * r}
  4. ''')
  5. robjects.r['f'](3)
  6.  
  7. # internal function in R
  8. robjects.r['ls']()
  9.  
  10. # another internal function
  11. l = robjects.r['letters']
  12. len(l)
  13. robjects.r['paste'](l, collapse = '-')
  14.  
  15. # an alternative way of getting 'paste' function in R
  16. # eval the R code
  17. coder = 'paste(%s, collapse = "-")' % (l.r_repr())
  18. robjects.r(coder)

6.pandas调用R

具体参考 pandas官方文档–rpy2 / R interface

7.pandas和R的函数对比

具体参考 pandas官方文档–Comparison with R / R libraries 
列出了实现相同功能的pandas和R的代码,很有启发性。 
同时也说明,有想法,用什么工具实现都无所谓,纠结要选python还是R确实是舍本逐末了。如果时间不够,精通其中的一门语言,另一门语言能够掌握简单的使用,也就够了。

以后有事时间再详细写写pandas调用R的部分,以它们之间数据来回传输的原理和注意事项。

我把下载的包放到了d盘的programdata

Python调用R语言的更多相关文章

  1. python调用R语言,关联规则可视化

    首先当然要配置r语言环境变量什么的 D:\R-3.5.1\bin\x64; D:\R-3.5.1\bin\x64\R.dll;D:\R-3.5.1;D:\ProgramData\Anaconda3\L ...

  2. (转)python中调用R语言通过rpy2 进行交互安装配置详解

    python中调用R语言通过rpy2 进行交互安装配置详解(R_USER.R_HOME配置) 2018年11月08日 10:00:11 luqin_ 阅读数:753   python中调用R语言通过r ...

  3. python 调用 R,使用rpy2

    python 与 R 是当今数据分析的两大主流语言.作为一个统计系的学生,我最早接触的是R,后来才接触的python.python是通用编程语言,科学计算.数据分析是其重要的组成部分,但并非全部:而R ...

  4. 比较分析C++、Java、Python、R语言的面向对象特征,这些特征如何实现的?有什么相同点?

    一门课的课后题答案,在这里备份一下: 面向对象程序设计语言 –  比较分析C++.Java.Python.R语言的面向对象特征,这些特征如何实现的?有什么相同点? C++ 语言的面向对象特征: 对象模 ...

  5. python调用C语言接口

    python调用C语言接口 注:本文所有示例介绍基于linux平台 在底层开发中,一般是使用C或者C++,但是有时候为了开发效率或者在写测试脚本的时候,会经常使用到python,所以这就涉及到一个问题 ...

  6. Python调用R编程——rpy2

    在Python调用R,最常见的方式是使用rpy2模块. 简介 模块 The package is made of several sub-packages or modules: rpy2.rinte ...

  7. .Net调用R语言

    ///加载自己写的R语言算法库 public List<double> GetZTFB(double[] data) { List<double> par = new List ...

  8. .net 调用R语言的函数(计算统计值pvalue 对应excel :ttest)

    Pvalue 计算 项目设计pvalue计算,但是由于.net 没有类似的公式或者函数,最终决定使用.net 调用R语言 采用.net 调用r语言的公用函数 需要安装 r语言环境 https://mi ...

  9. shell中调用R语言并传入参数的两种步骤

    shell中调用R语言并传入参数的两种方法 第一种: Rscript myscript.R R脚本的输出 第二种: R CMD BATCH myscript.R # Check the output ...

随机推荐

  1. POJ 2195 Going Home(最小费用最大流)题解

    题意:给你一张图,有k个人和k个房子,每个房子只能住一个人,每个人到某一房子的花费为曼哈顿距离,问你让k个人怎么走,使他们都住房子且花费最小. 思路:我们把所有人和超级源点相连,流量为1花费为0,所有 ...

  2. Filter execute order in asp.net web api

    https://stackoverflow.com/questions/21628467/order-of-execution-with-multiple-filters-in-web-api Som ...

  3. kylin-cube存储结构

    前言 本篇文章通过图文的方式分析不同维度组合下的cube在hbase中的存储结构 需要声明的是,kylin不存原始数据,存储cube 全维度构建 假设一张表有3个字段name,age,sex,那么当通 ...

  4. sonar runner的配置

    #Configure here general information about the environment, such as SonarQube DB details for example ...

  5. codevs 2216 行星序列 线段树+延迟标记(BZOJ 1798)

    2216 行星序列  时间限制: 2 s  空间限制: 256000 KB     题目描述 Description “神州“载人飞船的发射成功让小可可非常激动,他立志长大后要成为一名宇航员假期一始, ...

  6. python 通过列表元素值截取列表并获取长度

    def count_range_in_list(li, min, max): ctr = for x in li: if min <= x <= max: ctr += return ct ...

  7. Java中的基本数据类型及其封装类

    Java中的数据类型有两种,基本数据类型和引用数据类型,引用数据类型的创建是 需要去new一个对象,该对象的内存分配在堆区,同时栈区会保存一个指向该对象的引用, 但是对于一些简单数据的创建,用new的 ...

  8. Java Spring-AspectJ

    2017-11-10 21:25:02 Spring的AspectJ的AOPAspectJ 是一个面向切面的框架,它扩展了 Java 语言. AspectJ 定义了 AOP 语法所以它有一个专门的编译 ...

  9. UVA-1336 Fixing the Great Wall(区间DP)

    题目大意:长城(视作x正半轴)有n处破损.有一个智能修复机器人,它的初始位置和移动速度已知.每处破损处都有一组参数(x,c,d),x表示位置,c.d表示在时间t后再修复该处破损的花费为d*t+c.求用 ...

  10. UVA-12166 Equilibrium Mobile(二叉树)

    题目大意:改变二叉树上的权值,使树平衡,问最少该几个值. 题目分析:不会做,查的题解.有条奇妙的性质:如果将第d层权值为w的节点为基准做改动,则整棵树的总重量为w<<d,即w*2^d.仔细 ...