惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
罗磊的独立博客
人人都是产品经理
人人都是产品经理
博客园_首页
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
L
Lohrmann on Cybersecurity
博客园 - 【当耐特】
量子位
Last Week in AI
Last Week in AI
D
Darknet – Hacking Tools, Hacker News & Cyber Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
C
Cyber Attacks, Cyber Crime and Cyber Security
腾讯CDC
有赞技术团队
有赞技术团队
Cyberwarzone
Cyberwarzone
T
Tor Project blog
V
V2EX
L
LINUX DO - 热门话题
Security Latest
Security Latest
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
NISL@THU
NISL@THU
C
Cisco Blogs
T
Tailwind CSS Blog
G
GRAHAM CLULEY
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
小众软件
小众软件
K
Kaspersky official blog
博客园 - 司徒正美
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
Jina AI
Jina AI
S
Schneier on Security
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
The Exploit Database - CXSecurity.com
Scott Helme
Scott Helme
J
Java Code Geeks
博客园 - 聂微东
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
AWS News Blog
AWS News Blog
Know Your Adversary
Know Your Adversary
C
Cybersecurity and Infrastructure Security Agency CISA
F
Fortinet All Blogs
T
Threat Research - Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
雷峰网
雷峰网

熊言熊语

焦虑的反面是具体:用3年AI实践和你分享这份AI科研心得指南 | 熊言熊语 因为 AI 终于我可以尝试把自己最好的东西给你 | 熊言熊语 Guardant Shield 获批:详谈这5年你该了解的按部就班、跌跌撞撞 、布局和野望 | 熊言熊语 除了E人变I,断网半年后我的3个感悟和1个项目 | 熊言熊语 同源重组修复缺陷HRD :产品总览 | 熊言熊语 同源重组修复缺陷HRD:临床验证 | 熊言熊语 同源重组修复缺陷HRD:从无到有 | 熊言熊语 聊肿瘤生物标志物时我们在聊什么 | 熊言熊语 肿瘤组织和液体活检结果不一致,好事还是坏事 | 熊言熊语 肿瘤精准治疗究竟多难 看这7个临床实践障碍 | 熊言熊语 关于wolai被钉钉收购:多研究些问题少谈些逻辑 | 熊言熊语 MSKCC 尚待解决的肿瘤基因组检测临床应用问题 | 熊言熊语 不要错过的14档肿瘤研究专业相关播客 | 熊言熊语 从靶向治疗耐药机制到联合用药策略(下篇) | 熊言熊语 那些获得FDA突破性设备认证的多癌种早筛公司 | 熊言熊语 2022的混乱和坚持 2023的困难和勇敢 | 熊言熊语 从靶向治疗耐药机制到联合用药策略(上篇) | 熊言熊语 和头部肿瘤早筛公司 GRAIL CEO 学写年终工作总结 | 熊言熊语 2022年肿瘤精准治疗进展回顾 看OncoKB和FDA审批就够了 | 熊言熊语 Foundation Medicine 42万例样本库分析KRAS泛癌种突变特征得出了这些结论 | 熊言熊语 从2002年的Nature论文到2022年的亿元营收 | 熊言熊语 肿瘤NGS行业新人如何构建自己的知识体系 | 熊言熊语 Nature Genetics:低TMB患者福音 肿瘤非整倍体可预测泛癌免疫治疗疗效 | 熊言熊语 Nature Cancer:高度非整倍体非小细胞肺癌 放疗同步免疫治疗更敏感 | 熊言熊语 Nature Reviews Cancer:未来10年肿瘤精准治疗的6个未解之谜 | 熊言熊语 通过一份会议日程多了解点液体活检 | 熊言熊语 找到一种和这个世界沟通的方式 | 熊言熊语 跨越60年的癌症靶向治疗里程碑 | 熊言熊语 同样做肿瘤NGS检测,美股上市的9家公司近况如何 | 熊言熊语 30 岁,让我们成熟和改变的不是生日而是生活 | 熊言熊语 ctDNA系列之一:ctDNA的生物学特征、检测技术问题和临床应用方向 | 熊言熊语 在《Google软件工程》里了解如何在团队内进行学习和分享 | 熊言熊语 如何衡量个人在团队项目中的贡献 | 熊言熊语 万字长文|染色体不稳定性,凭什么2022年还能用TCGA数据发Nature | 熊言熊语 FDA发布ctDNA应用于早期实体瘤药物开发的指导意见 | 熊言熊语 单平台文章阅读量超过100万,我可能做对了三件事。 | 熊言熊语 Gitee图床被禁?云对象存储配合CDN方案以及图片批量迁移方法 | 熊言熊语 别再用DEseq2和edgeR进行大样本差异表达基因分析了 | 熊言熊语 春天来了,但你得准备好继续过冬 | 熊言熊语 任务如何才能按时完成 | 熊言熊语 从肿瘤突变列表到辅助临床决策 | 熊言熊语 半年毕业 半年工作 我的2021年度总结 | 熊言熊语 你也可以在学术报告中讲好一个引人入胜的故事 | 熊言熊语 OncoSearch 肿瘤研究必备(自用)聚合搜索工具 | 熊言熊语 读陌生领域文献,我劝你别读正文 | 熊言熊语 准备两个版本的PPT | 熊言熊语 通往更好的决定 | 熊言熊语 更多地写 但是写的更短 | 熊言熊语 问题出现我再告诉大家 | 熊言熊语 重做新人 NGS肿瘤领域可以学些什么 | 熊言熊语 新手和专家的区别以及如何看待学习 | 熊言熊语 完成这个需要多长时间 | 熊言熊语 从 MacBook Pro M1 安装编译 R 踩坑想到的 6年硕博生活的6条心得-生活成长篇 | 熊言熊语 面对职业教育缺失,在科研行业的我们能做什么 | 熊言熊语 全球顶尖科学家榜单 | 熊言熊语 构建自己的数字花园-工具篇 | 熊言熊语 使用R语言分析上海地铁好位置周边的二手房价格 | 熊言熊语 熊言熊语会员通讯 4321X 第5期 | 熊言熊语 关于 wolai 这款工具的观察与困惑 | 熊言熊语 关于个人的认知不确定性 | 熊言熊语 需要时刻留心的24个生物信息学提示 | 熊言熊语 要不要读博(答读者信) | 熊言熊语 熊言熊语会员通讯 4321X 第3期 | 熊言熊语 用三个问题回顾 2020(全员协作版) | 熊言熊语 熊言熊语会员通讯 4321X 第2期 | 熊言熊语 熊言熊语会员通讯 4321X 第1期 | 熊言熊语 熊言熊语会员通讯 4321X 第0期 阅读与分享 | 熊言熊语 有备而来的 4321X | 熊言熊语 macOS big sur 升级后编译 R 的问题 你的实验伴侣摸鱼首选和通勤第一品牌 | 熊言熊语 如何帮助别人 | 熊言熊语 21天日记挑战-5分钟日记法 | 熊言熊语 使用 Zotero 在 Markdown 中优雅地处理参考文献 三个 Linux 文件高频小操作 | 熊言熊语 VS Code 代码编辑器入门指南下篇-场景化应用介绍 | 熊言熊语 VS Code 编辑器入门指南上篇-核心概念与组件 | 熊言熊语 把 Markdown 模板做成 VSCode 插件 简书这些年 | 熊言熊语 靠谱熊的每周分享 第4期 | 熊言熊语 靠谱熊的每周分享 第3期 | 熊言熊语 非蠢既坏 别这么想 | 熊言熊语 靠谱熊的每周分享 第2期 | 熊言熊语 R 的 20 年 | 熊言熊语 靠谱熊的每周分享 第1期 | 熊言熊语 停课不停学 推荐 7 门有趣实用的线上课程 | 熊言熊语 在家复工,学生党如何使用学术资源 | 熊言熊语 跨平台协作,让飞书实时接收语雀更新提醒 | 熊言熊语 特殊时期假期返程实录 | 熊言熊语 需要远程办公,不妨用 Trello 进行组织和协作 | 熊言熊语 学习素材共享小组V2.0(已停止招募) | 熊言熊语 Trello 看板内容太多,飞书表格帮你自动整理 | 熊言熊语 把飞书融入日常学习流程:一个人的飞书也挺好 | 熊言熊语 人究竟怎样才算来过又怎样才算离开 | 熊言熊语 给一年前自己的一封信-2019 | 熊言熊语 眼见不为实:为什么29不等于29 | 熊言熊语 如何简快好省的使用图床 | 熊言熊语 这三个网站让我摸鱼都从容了 | 熊言熊语 我目前的云存储方法 | 熊言熊语
使用 VSCode 愉快地进行远程 R 开发
2020-01-08 · via 熊言熊语

2020-01-08, 2054 words, 8 min read

2019 年底(其实也就是半个多月之前)听了 renkun 大神在上海 R 会议的一个分享,分享主题是「Rstudio vs VSCode」,然后他紧接着又写了两篇使用 VSCode 进行 R 开发的博客。仔细了解之后,感觉自己有救了。

之所以这么说,是因为自己一直有个需求得不到很好的满足:在本地方便的开发部署在远程服务器上的 Shiny 应用。

具体一点说,因为我的 Shiny 需要依托一些 Linux 下才能运行的程序,且这些程序对内存有要求,就导致我无法在 Windows 本地使用 WSL 进行测试和开发。而之前使用 VSCode Remote SSH 让本地 VSCode 连接上服务器本身没问题,但是早期 R Console 运行得到的各种结果本身却无法在 VSCode 中方便的查看,总是需要跳出额外的各种窗口。

当然,使用 Rstudio Server 是一个选择,但在实际使用中会有比如单一 session,时常未响应,编辑器各种不顺手等等问题。

随着几位大神的开发加持,现在使用 VSCode 愉快地进行远程 R 语言开发不仅成为了一种可能,而且还非常香,在使用体验上基本不输 Rstudio,而且很多小细节上更加贴心。

为什么要用 VSCode 写 R

大家可能会有一个非常真诚的疑问,Rstudio (server) 它不香吗,写 R 为什么还要用其它编辑器? 下面这张幻灯片来自 renkun 在会议上的分享,基本说明了问题。

就像上图总结的,RStudio 好用,几乎是所有 R 用户的最佳选择。但同时像上文提到的,时不时的无响应带来的各种不稳定,单 session 操作等又让人苦恼。

你可能会有这样的感受,使用 Rstudio 的过程中因为其本身需要一直和服务器保持通信,live R session 和语言服务又无法分离,当 Console 中运行了一个耗时或者耗内存的命令之后,整个 Rstudio 就无法进行任何操作了。

那 VScode 呢?这个编辑器本身的优点不必多说,虽然之前对 R 的支持没那么友好,不过最近几个月在 VSCode 中使用 R 有了重大的体验升级,这主要体现在两个方面。

  1. R Language Server 在后端的加持
  2. vscode-R 插件在前端的重大迭代

R Language Server

首先说 R Language Server,R Language Server 依托于 Language Server Protocol(可以让任何语言在任何编辑器上得到很好的语法支持)。现在的 R Language Server 在 VScode 中已经非常好的支持了多种鼠标悬停内容展示、帮助文档展示、自动补全、文本高亮以及代码格式化等功能。

R Language Server 和 Rstudio 相比差别最大的一点在于前者是真正的静态分析(static analysis),指在不运行程序的条件下,进行程序分析的方法。也就是说所有功能的实现都无需运行代码,对代码进行的分析仅仅依赖代码本身。而且它的语言服务完全脱离于 R session,即便在 R session 非常繁忙的情况下依旧可以提供服务。

接下来仅仅列举几个在 Rstuido 中不是很方便实现或者无法实现的功能。

  • 鼠标悬停即显示函数定义和文档,无论对应的包是否已经加载。(箭头处为鼠标位置,下同)
  • 鼠标悬停在变量上,直接展示变量类型信息

这个就类似于 Rstuido 中 environment 那个小框的功能,但是更方便直观。

  • 自动高亮文档内所有同一变量
  • 选中代码,自动格式化,例如添加空格等。

vscode-R 新增 Session Watcher

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

  • 查看 data.frame

如下图右,直接查看 data.frame 内容,支持搜索。

  • 展示 ggplot 出图
  • 展示 htmlwidgets

通过 SSH 连接远程服务器

接下来简单介绍如何实现在本地 VScode 中实现远程 R 开发。

首先要实现的自然是远程操作,这里以使用 PC 通过 SSH 连接远程 Linux 服务器为例。

我们默认服务器已经开通了 ssh 服务,然后本地 PC 已经正确安装了 Windows OpenSSH Client。

安装插件 Remote-SSH

然后在命令行面板中找到 Remote-SSH 相关命令,可以直接选择链接服务器,也可以选择打开配置文件。这里我们选择打开配置文件进行简单的配置。

在配置文件中可以输入相应的用户名 IP 地址以及端口等信息。写法如下图所示,写好保存即可。

再选择连接 Host 的命令,就会看到之前我们已经保存好的 Host 选项。

点击对应的 Host,然后输入密码即可。

如果为了方便不想每次都输入密码,可以使用 SSH key 配置服务器和本地的公钥私钥,这里不再展开。

连接成功之后,VSCode 左下角就会显示一个远程连接的标志,同时你还可以直接在 TERMINAL 中打开一个 shell (我用的是 zsh),就像平时使用类似 Xshell 的工具一样直接进行各种操作。

配置 R 语言开发环境

完成了远程连接服务器的工作,接下来是在 Remote 状态下简单进行 R 相关的配置。

首先安装两个必备的插件,R 和 R LSP。然后还需要在服务器的 R 中安装一个 R 包 languageserver。

install.packages("languageserver")

随后在设置界面中进行几个关于 R 的设置。

首先是设置 Linux 下的 R 路径,如果使用系统自带的 R 应该是/usr/bin/R ,如果是使用自己目录下,例如使用 conda 安装的 R 则指定对应的 R 路径。这里推荐使用 Radian 替代 R,所以我的 R 路径就指向了使用 conda 安装的 radian。如下图所示。

如果使用 Radian 的话,则需要勾选 Bracketed Paste 选项。

如果希望使用服务器上的一些 R 配置,例如 .Rprofile 和 .Renviron 文件,那么 Rterm Option 处就不要加什么其它参数,如果不希望使用则可以酌情添加--no-init-file 或者 --no-environ 等参数。

安装插件。在 Rstudio 中路径的自动补全功能非常方便,在 VSCode 中则可以通过插件 Path Autocomplete 来实现这个功能。

至此,就完成了在 VSCode 中使用 R 所需要的一些基本配置,可以开工搬砖。

最终使用效果

直接上截图。

  • 左侧为服务器对应的文件目录,可以直接点击查看编辑
  • 中间是 R 脚本,可以开心的写代码
  • 右边是对应的网页工具,直接查看效果
  • 下面是连接到服务器的终端,可以在 zsh、R 以及 python 等终端任意切换。也可以同时打开多个不同的 R 终端进行不同任务,互不干扰。

扩展资料:


本文作者:思考问题的熊

版权声明:本博客所有文章除特别声明外,均采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。

如果你对这篇文章感兴趣,欢迎通过邮箱订阅我的 「熊言熊语」会员通讯,我将第一时间与你分享肿瘤生物医药领域最新行业研究进展和我的所思所学所想点此链接即可进行免费订阅。

· 分享链接 https://kaopubear.top/blog/2020-01-08-remotevscoder/