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里更换。(前提是你有装别的版本)
一套新的操作逻辑
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就好了例如:
在同一个markdown文件下可以依次运行的。
还更厉害的么?
这次的markdown全面支持inline模式,也就是说你完全可以像Jupyter一样去使用。
如果你不习惯inline模式。只需要在选项里切换,秒变spyder!
现在在rstudio里,你能依次跑一个block(rstudio里叫chunk),也能像过去一样一行一行运行代码。
甚至还有一个数据查看器
还有么?
既然是全都要,那数据一定得是能互通的!如果我想把数据从R传入到python。
反过来也是可以的!
以后真就左手R右手python了真正意义上的合体了
目前存在的问题
虽然目前来说reticulate已经十分好用了,也还是存在些许问题。
- python的帮助文档做的不好:
这点嘛。感觉python的开发文档更喜欢独立做一个网页。而R包的几乎都完全集成在包里了,方便随时查看。 - rstudio的自动补全对python支持的不好:
相比于kite这种神级插件,rstudio的自动补全只能说能补,但不都能补全。这也跟R和python对函数/模组调用逻辑不同有关。 - macos下如果使用opencv2,图片打开了没法正常关闭(win10正常)。该问题在jupyter下也存在。当然解决方法无非是f.close(),cv2.destroyAllWindows() cv2.waitKey(1)这种。没什么好说的,知道就行……
- 运行速度是真不如jupyter快,rstudio跑python总是要犹豫一下再跑的感觉。
- rstudio的文件管理系统做的再丰富点就更好了。
- rstudio在python下生成的图片似乎不能实时刷新,如果像R里那样就更棒了。
最后
已经试过python爬虫(requests, bs4, lxml),图像处理(opencv, plantCV),数据处理(numpy, pandas)甚至神经网络(detectron2)。没遇到不顺手的问题。甚至可以用python爬虫后再用r处理数据。python对文字处理还有正则运用确实要比r强不少的。如果你用python开发大型项目,首选pycharm。如果你跑python脚本或者用python处理数据,又恰好很习惯rstudio的逻辑。那么别折腾别的编译器了,用rstudio一点都不痛苦。