主要使用python库rpy2完成python对R的调用过程。
下载安装rpy2
- 在第三方库https://www.lfd.uci.edu/~gohlke/pythonlibs/中下载适合电脑的版本的whl文件,然后使用pip完成本地安装。
- win+R,将路径切换到上述whl文件所在路径,使用pip install ….whl完成安装。
- windows电脑配置环境变量。
- 控制面板->系统和安全->系统->高级系统设置->环境变量,新建R的环境变量R_HOME,变量值为R所在的安装目录。
- 再建一个rpy2的环境变量R_USER,变量值为rpy2的路径,如D:\Anaconda3\Lib\site-packages\rpy2
- 在python中调用R
import rpy2.robjects as robjects # 加载org.Hs.eg.db包 robjects.r['library']('org.Hs.eg.db') robjects.r['library']('annotate') for n in entre_id: # 使用R中lookUp函数 g = robjects.r['lookUp'](str(n), "org.Hs.eg", "SYMBOL") muta.Hugo_Symbol[muta.Entrez_Gene_Id.values == n] = g
- 将R脚本转换成字符,然后整段调用
import rpy2.robjects as robjects # 导入R对象 # 将整段R脚本变成字符串的格式,然后整段运行 r_script = ''' library(randomForest) ## use data set iris data = iris # 创建随机森林模型给鸢尾花分类 iris.rf <- randomForest(Species~., data = data, importance=T, proximity=T) print('--------RF-------') print(iris.rf) confusion = iris.rf$confusion print(confusion) ''' # 运行上述脚本 robjects.r(r_script)
-
但有时候,我们可能需要在python脚本的运行过程中,调用R的一些函数,这时候就需要考虑python的pandas.DaatFrame数据框与R中的data.frame格式之间的差异,python中的数据框将无法直接输入到R函数中,这时候就需要使用下述过程:
from rpy2.robjects import pandas2ri # pandas2ri.activate()使得python可以自动将dataframe对象在python和R之间进行转换 pandas2ri.activate() # 直接使用r中函数'anno'调用data(data是pandas.DataFrame对象) anno_data_r = ro.r['anno'](data) # 再使用pandas2ri.ri2py函数将anno_data_r(R中的data.frame)转换成python可以接受的pandas.DataFrame对象 anno_data_py = pandas2ri.ri2py(anno_data_r) pandas2ri.deactivate()
需要注意的是上述过程使用的rpy2版本为2.9.4,对于最新版本的rpy2,用法稍有不同。
更多推荐
python调用R
发布评论