在[[114-R工具指南22-R包的版本控制]] 及[[112-R工具指南21-使用conda帮你在服务器上装R包]] 我们就反复提到过R studio server 的阴谋:
★免费版的Rserver,只能使用管理员配置的R。这也就意味着,你没法自由地驰骋在你的R环境里,包括安装R 包等等。你唯一可以做的,就是抛弃可视化的IDE,回到原始的R terminal 的拥抱。 ”
氪金是不可能氪金的,而且这种TO B的服务,我们也确实难以承担。
下面就来配置一下vscode,使用vscode 在服务器进行R 的远程开发。
本地也就是对vscode 的配置了。其实我个人一直对vscode 比较冷淡的,说重,它不如Rstudio 在本地操作顺手;说轻,它不如sublime text。
但现在为了用R,我只好与你再次交流一下。
vscode 的配置暂且按下不表,可以参考:史上最全vscode配置使用教程 - 知乎 (zhihu.com)[2]
等我玩熟了也写一期好物分享给大家。
这里首先需要安装Remote SSH
插件。
还有一个Remote -SSH: Editing Configuration Files
插件,主要是方便编辑Remote-SSH
的配置文件(比如智能补全、高亮等)。
首先配置一下ssh 文件:
打开对应文件后,我们需要编辑一下。如下格式:
Host oracle
HostName xx.226.xx.116
User yzpeng
Port 6565
接下来选择对应的主机连接即可:
3-服务器准备
当然服务器得有R 环境了,我们还是conda 安装一套流程:
conda create -n R4.1 -y r-base
conda activate R4.1
接下来我们安装一些R 包和插件,以更好在vscode 上使用R。
首先是languageserver 包,使得编辑器可以识别R,只有安装了这个包才能实现 R 和 编辑器的同步。
conda install -c conda-forge r-languageserver
另外,我们可以再安装一款R 编辑器,radian,它可以让R 语法高亮,同样conda 安装即可:radian | 一款21世纪的R语言编辑器 - 知乎 (zhihu.com)[3]
这个语法提示真的爱了:
这里主要是安装几个vscode 的插件。
需要注意的是,这里插件的安装是在服务器连接的窗口下执行的:
这里需要安装 R
和R LSP Client
两个插件。
这里不得不夸夸vscode,插件我的爱,而且可视化界面比sublime text 操作也要容易。
目前2022-03-18_Fri
,R 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 之中了。
现在开始配置远程R
插件。右键单击在远程安装的R
插件,打开R
插件的设置文件:
我们需要在服务器的选项卡下操作:
打钩:
以下项目,填上radian
的在远程服务器上的安装路径:
在熊的那个年代,并非默认的:
★vscode-R 插件则在最近的更新中新增了一个 Session Watcher 功能,即便还在测试阶段这个功能也足以让人激动。它实现了在 VSCode 中实时展示各种变量的需求,View() 的时候再也不会有各种弹窗了。文字不好描述,直接上图。 ”
现在 Session Watcher 已经是默认打开了。
首先是创建一个R 脚本:
接着在终端中分别进入先前安装R 的环境,以及radian 编辑器:
此时执行代码:
这个环境里的R就是你的编辑用的R啦。
主要是管道和赋值符号。
首先找到设置快捷键的位置:
直接打开json文件:
写入:
// 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]。
我们可以安装不同的图片插件,比如:
然后在侧边打开图片即可。
但是,我一旦使用View 就会报错:
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 这些迅速了解数据框内容。
没有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/