什么?你能在rstudio里写python?折腾reticulate 5分钟后,我逐渐了解了一切

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?折腾reticulate 5分钟后,我逐渐了解了一切)