Python调用R(rpy2的基本使用)


一、rpy2安装,稳定版本python3.6,R版本3.6.1

前言

Python编程灵活方便,R的模型方法众多,如何将两者结合起来,发挥更大的作用,值得探索。Python中可以直接调用R,利用R中的函数对数据进行处理。Rpy2提供了一个从Python到R的底层接口,使得Python可以很直接调用R中的包和函数进行数据分析。

1>用pip或者conda直接安装(注意)

 conda install rpy2
 pip install rpy2

2>conda中需要配置R环境的路径

3>R安装完成之后,如果安装到个人路径下,需要添加四个环境变量到配置文件中:

export R_HOME=path-to-R
export R_LIBS=$R_HOME/lib64/R/library
export LD_LIBRARY_PATH=$R_HOME/lib:$LD_LIBRARY_PATH
export PATH=$R_HOME/bin:$PATH

二、rpy2的使用介绍

1、python调用R对象(函数、包)

有三种方法调用R对象,分别“相当于”把r实例当作字典、把r实例当作方法、把r实例当作一个类对象


#‘pi’为R的内置变量
# 第一种
t0=robjects.r['pi']
print(t0[0])
# 第二种
t1=robjects.r('pi')# 这种方法从某种程度上讲是万能的,因为可以将任意大小和长度的R代码写成一个python字符串,之后通过robjects.r('Rcode')调用执行
print(t1[0])
a = robjects.r('a<-c(1,2,3)')
print(a)
#第三种
t2=robjects.r.pi# 这种方法对于名称中有“点号”的变量会出问题,比如data.frame/read.csv等
print(t2[0])

2、调用R函数

# creat an R function,自定义R函数
robjects.r('''
           f <- function(r){pi * r}
           ''')
t3=robjects.r['f'](3)
print('%.3f'%t3[0])

#一个复杂的例子如下:
r_script = '''
library(randomForest) # 导入随机森林包
## use data set iris
data = iris # 使用鸢尾花数据集
table(data$Species)
## create a randomForest model to classfy the iris species
# 创建随机森林模型给鸢尾花分类
iris.rf <- randomForest(Species~., data = data, importance=T, proximity=T)
print('--------here is the random model-------')
print(iris.rf)
print('--------here is the names of model-----')
print(names(iris.rf))
confusion = iris.rf$confusion
print(confusion)
'''
robjects.r(r_script)

三、进行Python调用R的代码实现

调用R环境

import rpy2.robjects as robjects

robjects.r.source('D:/xiaoliu/Python_R/first_pythonR.R')

R部分


testDefault <- function(a=3){
  result = a*2
  ## here should be NOTICE: must be return 'result'. must not return (a*2). 
  ## if do, it will error: arg would not be used
  return(result)
}

python部分



res_def =robjects.r.testDefault()
res_Notdef=robjects.r.testDefault(5)
print(res_def,res_Notdef)

运行结果

[1] 6
[1] 10

文章作者: 柒仔
文章链接: /article/46/
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 XiaoLiu!
侵权声明: 若无意对您的文章造成侵权,请您留言,博主看到后会及时处理,谢谢。
评论-----昵称和邮箱必填,网址选填
  目录