前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >117-R工具指南23-利用vscode进行R的远程开发,并打通conda环境

117-R工具指南23-利用vscode进行R的远程开发,并打通conda环境

作者头像
北野茶缸子
发布2022-04-05 15:39:04
2.8K1
发布2022-04-05 15:39:04
举报
文章被收录于专栏:北野茶缸子的专栏

前言

在[[114-R工具指南22-R包的版本控制]] 及[[112-R工具指南21-使用conda帮你在服务器上装R包]] 我们就反复提到过R studio server 的阴谋:

★免费版的Rserver,只能使用管理员配置的R。这也就意味着,你没法自由地驰骋在你的R环境里,包括安装R 包等等。你唯一可以做的,就是抛弃可视化的IDE,回到原始的R terminal 的拥抱。 ”

氪金是不可能氪金的,而且这种TO B的服务,我们也确实难以承担。

下面就来配置一下vscode,使用vscode 在服务器进行R 的远程开发。

1-准备工作

本地

本地也就是对vscode 的配置了。其实我个人一直对vscode 比较冷淡的,说重,它不如Rstudio 在本地操作顺手;说轻,它不如sublime text。

但现在为了用R,我只好与你再次交流一下。

vscode 的配置暂且按下不表,可以参考:史上最全vscode配置使用教程 - 知乎 (zhihu.com)[2]

等我玩熟了也写一期好物分享给大家。

这里首先需要安装Remote SSH 插件。

还有一个Remote -SSH: Editing Configuration Files插件,主要是方便编辑Remote-SSH 的配置文件(比如智能补全、高亮等)。

2-Remote SSH 连接到服务器

首先配置一下ssh 文件:

打开对应文件后,我们需要编辑一下。如下格式:

代码语言:javascript
复制
Host oracle
HostName xx.226.xx.116
User yzpeng
Port 6565

接下来选择对应的主机连接即可:

3-服务器准备

当然服务器得有R 环境了,我们还是conda 安装一套流程:

代码语言:javascript
复制
conda create -n R4.1 -y r-base
conda activate R4.1

接下来我们安装一些R 包和插件,以更好在vscode 上使用R。

首先是languageserver 包,使得编辑器可以识别R,只有安装了这个包才能实现 R 和 编辑器的同步。

代码语言:javascript
复制
conda install -c conda-forge r-languageserver

另外,我们可以再安装一款R 编辑器,radian,它可以让R 语法高亮,同样conda 安装即可:radian | 一款21世纪的R语言编辑器 - 知乎 (zhihu.com)[3]

这个语法提示真的爱了:

这里主要是安装几个vscode 的插件。

需要注意的是,这里插件的安装是在服务器连接的窗口下执行的:

这里需要安装 RR LSP Client两个插件。

这里不得不夸夸vscode,插件我的爱,而且可视化界面比sublime text 操作也要容易。

目前2022-03-18_FriR LSP Client 已经不提供在市场里了。

按照官方的解释是REditorSupport/vscode-r-lsp: R LSP Client for Visual Studio Code (github.com)[4]

⚠️ This extension has been integrated into vscode-R[5] and will be unpublished in the VS Code marketplace at some point. Before installing the new version of vscode-R with language service support, please uninstall this extension to avoid conflict.

R LSP Client 已经被整合进插件R 之中了。

3-vscode 设置插件

现在开始配置远程R插件。右键单击在远程安装的R插件,打开R插件的设置文件:

我们需要在服务器的选项卡下操作:

打钩:

以下项目,填上radian的在远程服务器上的安装路径:

在熊的那个年代,并非默认的:

★vscode-R 插件则在最近的更新中新增了一个 Session Watcher 功能,即便还在测试阶段这个功能也足以让人激动。它实现了在 VSCode 中实时展示各种变量的需求,View() 的时候再也不会有各种弹窗了。文字不好描述,直接上图。 ”

现在 Session Watcher 已经是默认打开了。

4-第一个vscode的R代码

首先是创建一个R 脚本:

接着在终端中分别进入先前安装R 的环境,以及radian 编辑器:

此时执行代码:

这个环境里的R就是你的编辑用的R啦。

5-设置R快捷键

主要是管道和赋值符号。

首先找到设置快捷键的位置:

直接打开json文件:

写入:

代码语言:javascript
复制
// begin of R language shortcuts
[
{
    "key": "ctrl+shift+m",
    "command": "editor.action.insertSnippet",
    "when": "editorTextFocus && editorLangId == 'r'",
    "args": {
        "snippet": " %>% "
    }
},
{
    "key": "alt+-",
    "command": "editor.action.insertSnippet",
    "when": "editorTextFocus && editorLangId == 'r'",
    "args": {
        "snippet": " <- "
    }
}
]

参考 VScode设置R语言的快捷键Ctrl + Shift + M - 知乎 (zhihu.com)[6]

6-图片和数据框

我们可以安装不同的图片插件,比如:

然后在侧边打开图片即可。

但是,我一旦使用View 就会报错:

代码语言:javascript
复制
Error in .External2(C_dataviewer, x, title) : unable to start data viewer
In addition: Warning message:
In View(a) : unable to open display

貌似是一个很难解决的报错。

折腾了我一小时。无果……

不过,即使没有直接的View 窗口预览配置。我们也可以直接用函数,如head, str 这些迅速了解数据框内容。

7-缺点

没有Rproj 的R 是不完整的。

至少对我来说,配置的报错稍微多了一点。

甚至感觉用juypter 来操作R,都比vscode 强一点。

此外,通过操作,可以实现免密码登录:05. SSH和SCP的免密码使用(偷懒篇上) · 语雀 (yuque.com)[7]

如果vscode 可以直接ssh 连接后就进入对应环境下的radian,也会节省两部操作。

再说一句

经过这么一圈体验,我大概率不会抛弃Rstudio的。

毕竟Rstudio 作为一个成熟的IDE,我已经非常熟悉了。

不过,在某些远程开发配合conda 的情况,我可能会使用vscode。之前使用过公司的jupyter lab 远端开发。虽然没有vscode 延展性强,但也是足够用了。

也的确,基于conda 之类的系统,不仅让包安装变的方便,R 的版本控制,R 包的版本控制,也变得简单许多。

如果你想在本地使用vscode 编程,其实操作也差不多。更简单地,你只需要本地配置R 相关的内容,使用radian 编辑器开发即可。

东西都是熟能生巧,说不定以后,我会爱上vs code呢?

再推荐一个R for vscode 的教程吧:Kun Ren's Blog Posts (renkun.me)[8]

参考资料

[1]

使用 VSCode 愉快地进行 R 远程开发 - 知乎 (zhihu.com): https://zhuanlan.zhihu.com/p/101589703

[2]

史上最全vscode配置使用教程 - 知乎 (zhihu.com): https://zhuanlan.zhihu.com/p/113222681

[3]

radian | 一款21世纪的R语言编辑器 - 知乎 (zhihu.com): https://zhuanlan.zhihu.com/p/347780522

[4]

REditorSupport/vscode-r-lsp: R LSP Client for Visual Studio Code (github.com): https://github.com/REditorSupport/vscode-r-lsp

[5]

vscode-R: https://github.com/REditorSupport/vscode-R

[6]

VScode设置R语言的快捷键Ctrl + Shift + M - 知乎 (zhihu.com): https://zhuanlan.zhihu.com/p/352693264

[7]

05. SSH和SCP的免密码使用(偷懒篇上) · 语雀 (yuque.com): https://www.yuque.com/mugpeng/linux/bazwcy

[8]

Kun Ren's Blog Posts (renkun.me): https://renkun.me/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 北野茶缸子 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1-准备工作
    • 本地
      • 参考资料
  • 2-Remote SSH 连接到服务器
  • 3-vscode 设置插件
  • 4-第一个vscode的R代码
  • 5-设置R快捷键
  • 6-图片和数据框
  • 7-缺点
  • 再说一句
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档