在vscode中使用R-1

参考我的上一篇博客:

https://blog.csdn.net/weixin_62528784/article/details/145092632?spm=1001.2014.3001.5501
这篇内容实际上就是上一篇博客的后续承接,既然都在vscode的jupyter中使用R了,实际上其实也能够直接在vscode中原生使用R的编辑器等;

效果上其实是与Rstudio差不多的;

1,vscode中R的配置:

参考上面插件的配置需求:

其中的这个R包还是那个问题,如果只是进入radian或者是R的传统终端安装的话,比较麻烦,还容易报错;

所以还是使用conda解决问题

注意还是回到r-jupyter这个环境

然后就是其他的一些在vscode中增强R使用的体验:

(1)首先就是radian,一个新的R的终端,见下;

R-debugger等在vscode中的拓展也都安装了,类似的拓展有:

还有一个:

(2)还有一个就是httpgd的R包:

实际上是用于处理R生成的图像的,

如果没有这个的话,实际上理论上绘图的话是会打开另外一个窗口的,但是使用httpgd的话,生成的图片实际上是会内嵌到vscode编辑器内部的;

最近在R内安装R包总是失败,还是使用conda

2,配置新的R终端:radian
https://github.com/randy3k/radian

安装相关要求:

# install released version
pip3 install -U radian# to run radian
radian

目前是在r-jupyter环境中安装的,所以无论是all in jupyter的时候需要切换到该环境以及使用该环境的R内核;

如果要使用R终端的话,也需要切换进入到该环境中

只是个终端,实际上命令是一致的:

可以修改一下alias:

总之R就是进入传统终端,r是进入radian终端

当然上面的只能在r-jupyter环境中使用:

但是我终端是想在所有环境中都使用,所以可以将上面的这个radian添加到环境变量中,或者是直接使用alias,将小r修改为上面r-jupyter环境中的radian,

当然也可以在后面的终端修改中设置为默认开启radian的新终端而不是旧的传统的终端;

(1)对该终端的进一步设置:

参考:https://github.com/randy3k/radian/issues/268

在用户主目录下创建该文件,然后使用;
(2)以下是每一项设置的具体翻译和解释:

# 不要复制整个配置,只需指定你需要的内容!
# 参见 https://pygments.org/styles
# 有关支持的颜色方案的列表,默认方案是 "native"
options(radian.color_scheme = "native")
  • 翻译:不需要复制整个配置,直接指定需要的内容。可以访问指定链接查看所有支持的样式,默认颜色方案为“本地”。
  • 解释:设置终端的色彩模式,方便用户在命令行中识别信息。
  • 颜色方案参考:https://pygments.org/styles/

# 选择编辑模式,默认为“emacs”或“vi”
options(radian.editing_mode = "emacs")
  • 翻译:选择编辑模式,可以为“emacs”(默认)或“vi”。
  • 解释:定义用户在命令行中使用的文本编辑模式。不同模式有不同的快捷键和操作方式。
# 在vi插入模式中启用各种emacs绑定
options(radian.emacs_bindings_in_vi_insert_mode = FALSE)
  • 翻译:在vi模式的插入模式中启用emacs的键绑定。
  • 解释:如果设置为TRUE,用户在vi插入模式中可以使用emacs的快捷键;若设置为FALSE,则使用vi的方式。
# 在radian.editing_mode是`vi`时显示vi模式状态
options(radian.show_vi_mode_prompt = TRUE)
  • 翻译:当编辑模式为“vi”时,显示当前模式状态。
  • 解释:帮助用户了解当前处于vi的哪种模式(如正常模式或插入模式)。
options(radian.vi_mode_prompt = "\033[0;34m[{}]\033[0m ")
  • 翻译:设置vi模式的提示符。
  • 解释:自定义在vi模式下显示的提示符样式,通过颜色和格式标识当前模式。
# 对换行行进行缩进
options(radian.indent_lines = TRUE)
  • 翻译:对继续行进行缩进。
  • 解释:设置代码缩进,便于阅读和区分不同语句块。
# 自动匹配括号和引号
options(radian.auto_match = TRUE)
  • 翻译:启用括号和引号的自动匹配。
  • 解释:在输入时自动补全对应的括号或引号,提高代码输入效率。
# 启用[prompt_toolkit](https://python-prompt-toolkit.readthedocs.io/en/master/index.html)的[`auto_suggest`功能](https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html#auto-suggestion)
# 这个选项仍在实验阶段,已知会破坏python提示,使用时需谨慎
options(radian.auto_suggest = FALSE)
  • 翻译:启用提示工具库的自动建议功能。
  • 解释:该功能允许在输入时提供建议,处于实验阶段,可能会影响提示系统的正常运行。
# 高亮匹配的括号
options(radian.highlight_matching_bracket = FALSE)
  • 翻译:高亮显示匹配的括号。
  • 解释:设置为TRUE时,高亮匹配的括号,便于查看代码结构。
# 自动缩进新行和大括号
options(radian.auto_indentation = TRUE)
options(radian.tab_size = 4)
  • 翻译:自动为新行和大括号进行缩进,并设定制表符大小为4。
  • 解释:提高代码格式化的美观度和可读性。
# 输入时弹出补全
options(radian.complete_while_typing = TRUE)
  • 翻译:在输入时弹出补全建议。
  • 解释:提高代码书写效率,快速填充可能的命令或变量。
# 触发自动补全的前缀最小长度
options(radian.completion_prefix_length = 2)
  • 翻译:设定触发自动补全的最小前缀长度为2。
  • 解释:用户输入时,需要至少输入两个字符后才会显示补全选项。
# 超过时间取消补全的超时设置(以秒为单位)
# 设置为0则禁用超时
options(radian.completion_timeout = 0.05)
  • 翻译:设置完成选项的超时,超过0.05秒则取消。
  • 解释:防止补全操作过长时间阻塞用户的输入。
# 在函数参数补全中在等号两边添加空格
options(radian.completion_adding_spaces_around_equals = TRUE)
  • 翻译:在函数参数补全中,在等号周围添加空格。
  • 解释:为了提高代码的整洁度和可读性,自动在参数赋值时添加空格。
# 根据终端宽度自动调整R缓冲区大小
options(radian.auto_width = TRUE)
  • 翻译:根据终端宽度自动调整R的缓冲区大小。
  • 解释:增强用户在不同环境下的使用体验,避免内容溢出。
# 提示符之间插入新行
options(radian.insert_new_line = TRUE)
  • 翻译:在提示符之间插入新的行。
  • 解释:改善输出格式,使多个提示符之间有分隔行。
# 最大历史记录数
options(radian.history_size = 20000)
  • 翻译:设置最大历史记录数为20000。
  • 解释:定义可存储的最大命令历史条目以供查询。
# 存储全局历史的路径,环境变量将被展开
# 在Windows中,“~”展开为 %USERPROFILE% 或 %HOME%
options(radian.global_history_file = "~/.radian_history")
  • 翻译:指定全局历史记录文件的位置,路径中会自动扩展环境变量。
  • 解释:用户的命令历史记录会保存在这个文件中。
# 本地历史记录的存储文件名,如果当前工作目录下存在该文件,则使用它替代全局历史记录
options(radian.local_history_file = ".radian_history")
  • 翻译:指定本地历史记录文件名。
  • 解释:如果当前目录下存在此文件,则会在本地保存历史,而非全局文件。
# 使用历史搜索(emacs模式下 ctrl-r/ctrl-s)时不显示重复结果
options(radian.history_search_no_duplicates = FALSE)
  • 翻译:在历史搜索中不显示重复结果。
  • 解释:可以选择是否允许在重复搜索历史命令时继续显示相同的命令。
# 在历史搜索中忽略大小写
options(radian.history_search_ignore_case = FALSE)
  • 翻译:在历史搜索时不区分大小写。
  • 解释:设置为TRUE时,搜索可以不考虑输入的字母大小写。
# 不将调试浏览器命令(如 `Q`)保存在历史记录中
options(radian.history_ignore_browser_commands = TRUE)
  • 翻译:忽略调试浏览器命令的历史记录。
  • 解释:一些调试命令不需要记录,避免历史记录过于杂乱。
# 为不同模式自定义提示符
options(radian.prompt = "\033[0;34mr$>\033[0m ")
options(radian.shell_prompt = "\033[0;31m#!>\033[0m ")
options(radian.browse_prompt = "\033[0;33mBrowse[{}]>\033[0m ")
  • 翻译:自定义不同模式下的提示符。
  • 解释:根据不同操作模式设置不同的提示符样式,便于区分。
# stderr颜色格式
options(radian.stderr_format = "\033[0;31m{}\033[0m")
  • 翻译:设置标准错误输出的颜色格式。
  • 解释:使错误信息的显示更加直观。
# 启用reticulate提示并触发`~`
options(radian.enable_reticulate_prompt = TRUE)
  • 翻译:启用reticulate提示。
  • 解释:支持R和Python之间的互操作性,便于在R中调用Python代码。

部分需要再调整

3,其他的一些个性化设置:
(1)快捷键设置:

其中原始的ctrl+l是默认使用的终端清除命令,

然后新增的两个命令就是R中常用的执行某行,以及tidyverse中常用的%>%符号;


第一个快捷键定义部分

{"key": "ctrl+shift+m","command": "editor.action.insertSnippet","when": "editorTextFocus && editorLangId == 'r'","args": {"snippet": " %>% "}
}

完整解释

  • "key": "ctrl+shift+m"
    • 定义了快捷键组合。这里表示当用户同时按下Ctrl + Shift + M时,会触发相应的命令。
  • "command": "editor.action.insertSnippet"
    • 指定了快捷键执行的命令。这里的editor.action.insertSnippet表示插入代码片段(snippet)。
  • "when": "editorTextFocus && editorLangId == 'r'"
    • 定义了快捷键触发的条件:
      • editorTextFocus:当编辑器区域当前处于焦点时(也就是当前鼠标在编辑器中)。
      • editorLangId == 'r':只有当前文件语言是R(R语言文件)时,快捷键生效。
    • 这两个条件结合起来指明:只有当编辑器焦点处于R语言文件时,按下Ctrl + Shift + M才会触发此快捷键。
  • "args": { "snippet": " %>% " }
    • 这里定义了执行命令时的参数。"snippet": " %>% "表示在编辑器中插入字符串%>%
    • %>%是R语言中常用的管道操作符(来自tidyverse包)。这个快捷键提升了在使用dplyr等包时输入的效率。

第二个快捷键定义部分

{"key": "ctrl+enter",//"command": [ "python.execSelectionInTerminal", "cursorDown" ],"command": "macros.pythonExecSelectionAndCursorDown","when": "editorTextFocus && editorLangId == 'python'"
}

完整解释

  • "key": "ctrl+enter"
    • 定义了快捷键组合。这里表示按下Ctrl + Enter时会触发相应的命令,通常这是用来快捷执行代码的。
  • // "command": [ "python.execSelectionInTerminal", "cursorDown" ],
    • 这一行是注释,表示历史上可能曾用过的命令定义或备选内容,因为加了//前缀,它不会被解析为代码。目前这行代码已被注释不会执行。
    • 被注释掉的命令逻辑可能是:执行选中的Python代码片段后,将光标移到下一行。
  • "command": "macros.pythonExecSelectionAndCursorDown"
    • 这是当前生效的命令,表示执行宏操作pythonExecSelectionAndCursorDown
    • 这个宏意味着:运行选定的Python代码并将光标移到下一行,以便快速继续编写或运行下一部分代码。
  • "when": "editorTextFocus && editorLangId == 'python'"
    • 定义触发快捷键的条件:
      • editorTextFocus:当前编辑器区域具有焦点时。
      • editorLangId == 'python':当前文件是Python文件时。
    • 这两个条件结合起来指明:只有在编辑Python文件时,按下Ctrl + Enter快捷键才有作用。

额外说明

  • 注意:快捷键与命令之间是绑定的,但能否触发还需要满足when条件,这些条件确保快捷键只在特定情况下生效。
  • 对于R和Python的快捷键定义,分别是为了方便插入R语言的管道符号%>%和快速运行Python代码。

如果上面的快捷键跟电脑上的其它软件有冲突,则应做相应的修改

(2)vscode中的R拓展插件的一些设置:

首先是R终端交互的设置:

设置为radian的安装路径,也就是前面type radian,在all in one那个环境中


如果我上面没有设置成那个样子的话,也就是没有设置为radian的话:

那我再打开一个R终端的话,效果就是下面这种老旧的经典的终端,

所以我在上面的Rterm设置之后,我如果要随时打开一个R的终端,效果就是radian的新终端

另外就是下面这个最好也勾选上:搭配radian

总体而言:在vscode中使用R终端,无论是shell中R进入(或r进入radian),

还是ctrl+shift+p进入vscode中创建

或者是右下角

在进入R终端的时候:

我可以在vscode中同时开很多个R的 console,然后可以同时运行很多不同的任务,

这一点是和Rstudio不一样的:
因为Rstudio编辑器的进程是和终端的进程是绑定在一起的,相同的一个进程,不能用很多的R的console

(3)将httphd作为图片显示器

见前面,使用conda安装好了httpgd这个R包,然后就是设置中修改

同时也可以作为帮助文档的查看

(4)如何快速重启vscode:

CTRL+ENTER执行过程中遇到了问题,不能看到终端R打开执行R脚本中的任务

参考:https://blog.csdn.net/weixin_44090706/article/details/129343450

是R tools插件的冲突,如果想要卸载这个插件再执行R脚本的话:

每次插件处理前后都要重启

(5)如果是Rmd文件:

vscode本身是能够新建Rmd文件,并preview预览的

但是我们可以看到,并没有实际运行的按钮以及绘图效果:
参考:
https://blog.csdn.net/m0_54882482/article/details/129723469

设置里找:

原本的设置是这样的,所以没有渲染成功,也就是没有正确识别

修改如下:

现在回来再看就有了:

解决了在右边能够通过httpgd可视化绘制出来的图的效果

但是我是想在Rmd中预览这个效果

另外vscode里可以混合语言编程,所以是可以在Rmd文件中混合使用R以及python代码的;

就像我上一篇博客在jupyter notebook中混合使用python以及R语言一样

(6)然后就是R的实际使用方式了:
①进入R终端写代码:见上,有很多方式可以进入终端,常见的就是在shell中进入R

②新建一个R语言的文本文件:

可以是r文件或者是Rmd文档

③或者是参考我的上一篇博客:

python、r all in one jupyter,也就是在jupyter中使用R内核

4,总之效果就是:

留个悬念:如何预览Rmd文件以及绘图执行的效果?

参考:
https://blog.yfei.page/cn/2020/12/vscode-r/

https://blog.csdn.net/yijiaobani/article/details/124009210

https://www.bilibili.com/video/BV1ZS4y1X73w/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/65997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Block总结】掩码窗口自注意力 (M-WSA)

摘要 论文链接:https://arxiv.org/pdf/2404.07846 论文标题:Transformer-Based Blind-Spot Network for Self-Supervised Image Denoising Masked Window-Based Self-Attention (M-WSA) 是一种新颖的自注意力机制,旨在解决传统自注意力方法在…

【Linux】统信UOS服务器安装MySQL8.0(RPM)

目录 一、下载安装包 二、安装MySQL 2.1hive适配 2.2ranger适配 3.2DolphinScheduler适配 一、下载安装包 官网下载安装包:MySQL :: MySQL Downloads 选择社区版本下载 点击MySQL Community Server 选择对应系统的MySQL版本号 统信1060a 操作系统对应 redhat8…

Jenkins简单的安装运行

一、下载 官网下载:https://www.jenkins.io/download/ 清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/jenkins/ 官网资料丰富,介绍了各种平台安装以及下载。安装简单,按照说明来就行。下面我介绍一个非常简单的…

【CSS】HTML页面定位CSS - position 属性 relative 、absolute、fixed 、sticky

目录 relative 相对定位 absolute 绝对定位 fixed 固定定位 sticky 粘性定位 position:relative 、absolute、fixed 、sticky (四选一) top:距离上面的像素 bottom:距离底部的像素 left:距离左边的像素…

Ubuntu中双击自动运行shell脚本

方法1: 修改文件双击反应 参考: https://blog.csdn.net/miffywm/article/details/103382405 chmod x test.sh鼠标选中待执行文件,在窗口左上角edit菜单中选择preference设计双击执行快捷键,如下图: 方法2: 设置一个应用 参考: https://blo…

从0开始学习搭网站的第一天

前言,以下内容学习自mdn社区,感兴趣的朋友可以直接去看原文章web技术 目录 web机制互联网是怎么运作的网站服务器是什么什么是URL?什么是web服务器?什么是域名什么是超链接什么是网页DOMgoole浏览器开发者工具 web机制 互联网是怎…

黑马linux笔记(03)在Linux上部署各类软件 MySQL5.7/8.0 Tomcat(JDK) Nginx RabbitMQ

文章目录 实战章节:在Linux上部署各类软件tar -zxvf各个选项的含义 为什么学习各类软件在Linux上的部署 一 MySQL数据库管理系统安装部署【简单】MySQL5.7版本在CentOS系统安装MySQL8.0版本在CentOS系统安装MySQL5.7版本在Ubuntu(WSL环境)系统…

[Transformer] The Structure of GPT, Generative Pretrained Transformer

The Structure of Generative Pretrained Transformer Reference: The Transformer architecture of GPT models How GPT Models Work

浅谈云计算04 | 云基础设施机制

探秘云基础设施机制:云计算的基石 一、云基础设施 —— 云计算的根基![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1fb7ff493d3c4a1a87f539742a4f57a5.png)二、核心机制之网络:连接云的桥梁(一)虚拟网络边界&#xff…

解锁 JMeter 的 ForEach Controller 高效测试秘籍

各位小伙伴们,今天咱就来唠唠 JMeter 里超厉害的 “宝藏工具”——ForEach Controller,它可是能帮咱们在性能测试的江湖里 “大杀四方” 哦! 一、ForEach Controller 是啥 “神器” 想象一下,你手头有一串神秘钥匙,每…

sosadmin相关命令

sosadmin命令 以下是本人翻译的官方文档,如有不对,还请指出,引用请标明出处。 原本有个对应表可以跳转的,但是CSDN的这个[](#)跳转好像不太一样,必须得用html标签,就懒得改了。 sosadmin help 用法 sosadm…

【WPS】【WORDEXCEL】【VB】实现微软WORD自动更正的效果

1. 代码规范方面 添加 Option Explicit:强制要求显式声明所有变量,这样可以避免因变量名拼写错误等情况而出现难以排查的逻辑错误,提高代码的健壮性。使用 On Error GoTo 进行错误处理:通过设置错误处理机制,当代码执行…

Kafka 分区管理

分区是主题的子集,每个主题可以被分割成多个分区,一个分区有一个主副本(Leader)及一个或多个从(Follower)副本。分区允许将数据分布在多个broker上,这样可以提高数据的处理能力、并行性及可靠性…

【论文阅读+复现】High-fidelity Person-centric Subject-to-Image Synthesis

以人物为中心的主体到图像的高保真合成,CVPR2024 code:CodeGoat24/Face-diffuser: [CVPR2024] Official implementation of High-fidelity Person-centric Subject-to-Image Synthesis. paper:2311.10329 背景 研究问题:这篇文…

详解如何自定义 Android Dex VMP 保护壳

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 前言 Android Dex VMP(Virtual Machine Protection,虚拟机保护)壳是一种常见的应用保护技术,主要用于保护 And…

基于华为atlas的重车(满载)空车(空载)识别

该教程主要是想摸索出华为atlas的基于ACL的推理模式。最终实现通过煤矿磅道上方的摄像头,识别出车辆的重车(满载)、空车(空载)情况。本质上是一个简单的检测问题。 但是整体探索过程比较坎坷,Tianxiaomo的…

《零基础Go语言算法实战》【题目 2-25】goroutine 的执行权问题

《零基础Go语言算法实战》 【题目 2-25】goroutine 的执行权问题 请说明以下这段代码为什么会卡死。 package main import ( "fmt" "runtime" ) func main() { var i byte go func() { for i 0; i < 255; i { } }() fmt.Println("start&quo…

IntelliJ IDEA中Maven项目的配置、创建与导入全攻略

大家好&#xff0c;我是袁庭新。 IntelliJ IDEA是当前最流行的Java IDE&#xff08;集成开发环境&#xff09;之一&#xff0c;也是业界公认最好用的Java开发工具之一。IntelliJ IDEA支持Maven的全部功能&#xff0c;通过它我们可以很轻松地实现创建Maven项目、导入Maven项目、…

【Rust】函数

目录 思维导图 1. 函数的基本概念 1.1 函数的定义 2. 参数的使用 2.1 单个参数的示例 2.2 多个参数的示例 3. 语句与表达式 3.1 语句与表达式的区别 3.2 示例 4. 带返回值的函数 4.1 返回值的示例 4.2 返回值与表达式 5. 错误处理 5.1 错误示例 思维导图 1. 函数…

Cython全教程2 多种定义方式

—— 本篇文章&#xff0c;主要讲述Cython中的四种定义关键字 全教程2 多种定义方式&#xff1a; 在Cython中&#xff0c;关于定义的关键字有四个&#xff0c;分别是&#xff1a; cdef、def、cpdef、DEF 一、cdef定义关键字 顾名思义&#xff0c;cdef关键字定义的是一个C函数…