Vscode-R,R IDE的另一个选择

R studio 几乎是每个R初学者必备的R IDE,同时由于其跟R整个社区环境互作的很好,所以很多人都是将R studio和R等同起来的。但最近的一些需求使得我不得不寻求R studio以外的R IDE。

首先我需要安装一些 bioconductor 3.11 版本以后的R包,其次就是我需要安装一些需要较新的GCC版本的R包,比如Rcpp相关的一些。由于bioconductorR 的版本是密切相关的,所以前者需要我有R 4.0以上的R版本,而后者需要师兄重新修改服务器上的GCC。可惜的是,这两者在正常情况下,是无法做到的。因为生信的文件操作常常涉及到多线程(进程)、大内存的需求,本地的电脑无法承担这类任务,所以我的日常R语言操作都是在服务器上进行的。而服务器版本的R studio一次只支持一种版本的R,除非实验室购买专业版本的R studio,才有可能实现每个人自由切换自己的R版本。而修改GCC则更是不可能了,因为这几乎涉及到了服务器上所有的软件。

为了解决以上的矛盾冲突,我首先想到的是利用conda构建一个独立的R语言环境,然后再在里面进行操作。如果仅仅只是在conda里面的R中进行简单的加减法操作,可能这个解决办法已经可以了。但除了简单操作,我们还有一系列赋值,画图等操作。这就需要我们有另外的IDE去操作conda里面的R了,这也是本文的由来。

对于操作conda里面R的IDE选择,首选肯定还是R studio。如果服务器上装的R studio不能自由地切换到我们自己装的R,那conda里面的R studio可以么。答案是肯定的,conda中也存在着R studio。也有很多教程教你如何在conda里面调用R studio,但有一个很大的问题就是,conda里面的R studio版本不支持R 4.0以上的版本。所以这个解决办法并不适用于我的情况。

所以,我们就需要考虑另一些非主流的IDE了12。不过由于我本身是个很怕麻烦的人,服务器上的诸多配置都是师兄配置好的。所以我在选择IDE的时候,会倾向于选择拥有比较成熟的适配R语言插件的那些IDE。在搜寻了诸多资料之后,我发现了飞哥的一篇文章3。发现似乎vscode-R是一个相对来说比较成熟的R语言插件了。

其安装方法或者配置,由于飞哥的文章已经珠玉在前,我也没有必要连篇累牍了。只是由于飞哥的文章已经是一年之久了,该插件也经过了几番更新,所以我在此列出一些tips,供大家参考。

首先就是该插件在最近几个月引入一个非常好的功能:workspace viewer,其功能类似于R studio布局右上角的那个Global Environment 可以看到,你在产生一个变量的同时,workspace那里就会出现你变量的信息了。同时还可以点击那个变量查看详细的信息。

这个功能是促使我最终选择这个插件最重要的原因了。不过由于这个插件功能是最近才引入的,如果想要体验这个功能的话,一定要把该插件升到较新的版本。

同时,在早期版本的session worker中,查看图片的原理实际上是产生了你画图的plot.png,然后vscode-R去调用这个png。但实际上,由于png的分辨率非常地低,这样的操作并不是很方便。不过在后面的版本更新中,作者完善了插件,让session worker能够充分与httpgd包进行联动4。这样,最终的图片呈现的分辨率就非常地高了,缩放查看也非常地方便了。

其次我还想说,除了通过本地vscode的Remote-SSH插件来连接服务器,操作R以外。通过code-server来直接操作也是个不错的选择5

然后就是本人血淋淋的踩坑教训了,即你vscode当前工作目录的路径必须是跟你当前R语言的工作目录路径一致。这个状况常出现在软连接的时候。比如你将data/test软连接到了/home/test,然后你通过vscode打开的路径是home/test,而R语言的工作路径可能仍旧是data/test。这时候,vscode-R的session wacther功能,即上面的即时图片和变量显示就会失效了。

最后我想说的是,我也是刚刚开始对这个插件的使用,只尝试了一些我要用到的R包或者操作,并没有开始稳定地测试过。同时也因为很多地方提到了conda里面的R具有一些不稳定的坏处。所以我也不能确定R in conda + vscode-R 这个搭配是否可行。如果大家有其他不同的意见,也非常欢迎留言告诉我。


  1. IDE alternatives for R programming (RStudio, IntelliJ IDEA, Eclipse, Visual Studio)↩︎

  2. Question: Is there other IDE like R studio working on the linux? ↩︎

  3. 使用 VSCode 愉快地进行远程 R 开发 ↩︎

  4. Using httpgd in VSCode: A web-based SVG graphics device ↩︎

  5. 三步让你随时随地能用VSCode写代码 ↩︎

Guandong Shang
Guandong Shang
PhD Candidate

My research interests include rstats, epigenomics, bioinformatics and evo-devo.

Related