python调用R

主要使用python库rpy2完成python对R的调用过程。

下载安装rpy2

  1. 在第三方库https://www.lfd.uci.edu/~gohlke/pythonlibs/中下载适合电脑的版本的whl文件,然后使用pip完成本地安装。
    • win+R,将路径切换到上述whl文件所在路径,使用pip install ….whl完成安装。
  2. windows电脑配置环境变量。
    1. 控制面板->系统和安全->系统->高级系统设置->环境变量,新建R的环境变量R_HOME,变量值为R所在的安装目录。
    2. 再建一个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,用法稍有不同。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值