美文网首页磕盐——从入门到自闭
什么?你能在rstudio里写python?折腾reticula

什么?你能在rstudio里写python?折腾reticula

作者: 邵扬_Barnett | 来源:发表于2021-05-03 15:07 被阅读0次

    I have a R, I have a python

    如果说R语言对新人最友好的编译器那一定是rstudio,在python上嘛……不好说,我用过了pycharm,spyder和jupyter后。如果你是做软件开发或者大型项目的话,那么pycharm这种集成环境肯定是最好的。但如果你是跑脚本语言做科学计算,数据分析的话。恕在下直言,一个能打的都没有……Spyder有数据查看器但是不支持markdown语言,JupyterLab有markddown有各种插件,甚至还能写R。但是吧用起来总觉得是低配rstudio。
    那么有没有Spyder和Jupyter的合体呢?说你呢!不要走开。吃我一发reticulate安利吧!

    Boom! PRstudio-成年人就要全都要!

    有了rstudio 1.4和reticulate 以上的种种似乎都不叫事了!
    你只需要安装reticulate

    install.packages('reticulate')
    #或者
    devtools::install_github("rstudio/reticulate") 
    

    Bam,合体了!
    注意,默认reticulate给你安装的是python 3.6.1
    如果你像更换版本,可以在选项的python里更换。(前提是你有装别的版本)


    image.png

    一套新的操作逻辑

    reticulate毕竟是R包,管理python的时候就需要一套R自己的逻辑。
    首先查看R语言下python的设置命令变成了:

    reticulate::py_config()
    
    #python:         /Users/barnett/Library/r-miniconda/envs/r-reticulate/bin/python
    #libpython:      /Users/barnett/Library/r-miniconda/envs/r-reticulate/lib/libpython3.6m.dylib
    #pythonhome:     /Users/barnett/Library/r-miniconda/envs/r-reticulate:/Users/yangshao/Library/r-#miniconda/envs/r-reticulate
    #version:        3.6.13 | packaged by conda-forge | (default, Feb 19 2021, 05:36:16)  [GCC Clang 11.0.1]
    #numpy:          /Users/barnett/Library/r-miniconda/envs/r-reticulate/lib/python3.6/site-packages/numpy
    #numpy_version:  1.19.5
    #keyword:        /Users/barnett/Library/r-miniconda/envs/r-reticulate/lib/python3.6
    
    #NOTE: Python version was forced by use_python function
    

    如果需要安装包怎么办!reticulate做了一套傻瓜化的操作:

    #conda安装
    reticulate::py_install('opencv-python')
    #pip安装
    reticulate::py_install('opencv-python', pip = True)
    

    在R界面下如何调用python?

    reticulate::repl_python()
    

    如何退出python?

    quit
    

    坐下坐下,基操勿溜

    既然叫PRstudio了,那肯定不止这点本事。这次reticulate彻底打通了R和python的隔阂。
    这句话怎么理解?过去有写包或者模组教你在python里调用R函数或者在R里调用python模组。那些都太麻烦了 import也不好记忆。现在,你只要自己新建block的时候注明到底是R还是python就好了例如:


    image.png

    在同一个markdown文件下可以依次运行的。

    还更厉害的么?

    这次的markdown全面支持inline模式,也就是说你完全可以像Jupyter一样去使用。


    image.png

    如果你不习惯inline模式。只需要在选项里切换,秒变spyder!


    image.png

    现在在rstudio里,你能依次跑一个block(rstudio里叫chunk),也能像过去一样一行一行运行代码。
    甚至还有一个数据查看器


    image.png

    还有么?

    既然是全都要,那数据一定得是能互通的!如果我想把数据从R传入到python。


    image.png
    image.png

    反过来也是可以的!



    以后真就左手R右手python了真正意义上的合体了

    目前存在的问题

    虽然目前来说reticulate已经十分好用了,也还是存在些许问题。

    1. python的帮助文档做的不好:
      这点嘛。感觉python的开发文档更喜欢独立做一个网页。而R包的几乎都完全集成在包里了,方便随时查看。
    2. rstudio的自动补全对python支持的不好:
      相比于kite这种神级插件,rstudio的自动补全只能说能补,但不都能补全。这也跟R和python对函数/模组调用逻辑不同有关。
    3. macos下如果使用opencv2,图片打开了没法正常关闭(win10正常)。该问题在jupyter下也存在。当然解决方法无非是f.close(),cv2.destroyAllWindows() cv2.waitKey(1)这种。没什么好说的,知道就行……
    4. 运行速度是真不如jupyter快,rstudio跑python总是要犹豫一下再跑的感觉。
    5. rstudio的文件管理系统做的再丰富点就更好了。
    6. rstudio在python下生成的图片似乎不能实时刷新,如果像R里那样就更棒了。

    最后

    已经试过python爬虫(requests, bs4, lxml),图像处理(opencv, plantCV),数据处理(numpy, pandas)甚至神经网络(detectron2)。没遇到不顺手的问题。甚至可以用python爬虫后再用r处理数据。python对文字处理还有正则运用确实要比r强不少的。如果你用python开发大型项目,首选pycharm。如果你跑python脚本或者用python处理数据,又恰好很习惯rstudio的逻辑。那么别折腾别的编译器了,用rstudio一点都不痛苦。

    相关文章

      网友评论

        本文标题:什么?你能在rstudio里写python?折腾reticula

        本文链接:https://www.haomeiwen.com/subject/twufdltx.html