51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1603|回复: 1
打印 上一主题 下一主题

python3调用R

[复制链接]
  • TA的每日心情
    无聊
    2024-9-27 10:07
  • 签到天数: 62 天

    连续签到: 1 天

    [LV.6]测试旅长

    跳转到指定楼层
    1#
    发表于 2018-2-7 14:53:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
           由于工作需要,在做最优分箱的时候,始终写不出来高效的代码,所以就找到了R语言中的最优
    分箱的包,这个时候考虑到了在python中调用R语言,完美结合。在国内的中文网站搜了半天,搭建
    环境的时候一直出现” R_user not defined”这个错误,简直恼人,最后在Stack Overflow网站上找打
    了解决办法。

           我的环境是:win7 ;
    使用anaconda3 ;

           (一)首先你要有个anaconda包;
           这个就不多说了。

           (二)你要有个R语言的软件
           本人使用的微软开发的这个。当然你使用R官网的R语言软件,或者你使用RStudio问题都不大。

           https://mran.revolutionanalytics.com/download

           设置完成R与的环境变量
           1.以后将R目录添加至path环境变量
           path:D:\R\microsoft-r-open-3.4.2\bin\x64;
           2. 将R.dll添加至path环境变量
           path:D:\R\microsoft-r-open-3.4.2\bin\x64\R.dll;

           (三)根据小伙伴的经验下载rpy2
           要去非官方的地方下载一个whl文件。
           http://www.lfd.uci.edu/~gohlke/pythonlibs/#rpy2

           请认准python的版本和64位的下载,下载以后,安装rpy2.whl ,
           把它放在D:\Anaconda3\Anaconda3\Lib\site-packages下面,反正就是你的anaconda的
    site-packages下面。



          cmd中命令行,然后进入到刚刚那个路径,
    1. C:\Users\Administrator>D:

    2. D:\>cd D:\Anaconda3\Anaconda3\Lib\site-packa

    3. D:\Anaconda3\Anaconda3\Lib\site-packages>pip install rpy2-2.8.6-cp36-cp36m-win_amd64.whl
    复制代码

          最后会显示successful,你就成功啦;

         (四)配置环境测试R与的代码是否可以运行


          打开你的python,然后按照你的情况,敲上这些代码,试一试。
    1. In [1]: import os

    2. In [2]: os.environ['R_HOME'] = 'D:\R\microsoft-r-open-3.4.2'

    3. In [3]: os.environ['R_USER'] = 'D:\Anaconda3\Anaconda3\Lib\site-packages\rpy2'

    4. In [4]: import rpy2.robjects as robjects

    5. In [5]: robjects.r('''
    6.    ...:         # create a function `f`
    7.    ...:         f <- function(r, verbose=FALSE) {
    8.    ...:             if (verbose) {
    9.    ...:                 cat("I am calling f().\n")
    10.    ...:             }
    11.    ...:             2 * pi * r
    12.    ...:         }
    13.    ...:         # call the function `f` with argument value 3
    14.    ...:         f(3)
    15.    ...:         ''')
    16. Out[5]:
    17. R object with classes: ('numeric',) mapped to:
    18. <FloatVector - Python:0x000000000B06FD88 / R:0x000000000EFE65B8>
    19. [18.849556]
    复制代码
        (五)调用R的包
          我们一般使用python来调用R语言,一般要去用python里面某个没有的特殊包之类的。所以现在
    我来调用smbinning包。smbinning包是数据分箱的时候能实现最优分段的一个包。
    1. In [6]: from rpy2.robjects.packages import importr
    2. In [7]: smbinning = importr('smbinning')
    复制代码



    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-27 09:06 , Processed in 1.393744 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表