将 R 设置为从头开始使用 Visual Studio Code - “未找到命令 `r.executeInTerminal`”

Lou*_*haw 5 python json r visual-studio-code

尝试在 Windows 中从 R-Studio 切换到 VSCode。2个问题:

  1. 如何允许 VS Code 中的 R 脚本将代码发送到 VS Code 中的 R 终端。r.executeInTerminal我目前收到“未找到命令”。这里有一个屏幕截图
  2. 我是否使用了错误的弧度文件路径?

以下是我所采取的具体步骤,因此其他新手可能会比我快一点。

我安装了最新版本的python(3.10.6;不要从Windows商店安装,而是从这里安装)和R(4.2.1)。然后,我在 VSCode 内的 Windows PowerShell 终端内按照此处的建议使用以下命令安装了弧度:

py -m pip install -U radian
Run Code Online (Sandbox Code Playgroud)

然后,我通过在同一位置键入以下内容找到了安装路径(遵循此处的建议):

py -m pip show radian 
Run Code Online (Sandbox Code Playgroud)

输出:Location: c:\users\louis\appdata\local\programs\python\python310\lib\site-packages

在文件资源管理器中,我将路径复制到搜索栏中,移动到弧度文件夹,点击左上角的复制路径按钮,然后将 R 设置页面的路径添加到我的用户设置(JSON)中,但它没有工作。

我决定停止尝试使用弧度并r.rterm.windows直接保留到R.exe文件路径。我在 RStudio 中使用以下命令找到了此文件路径:

R.home("bin") # [1] "C:/PROGRA~1/R/R-42~1.1/bin/x64"
Run Code Online (Sandbox Code Playgroud)

请注意:你必须反转斜杠才能在 Windows 中找到该文件,所以对我来说这是“C:\PROGRA~1\R\R-42~1.1\bin\x64”。

然后,您可以将文件路径粘贴到文件资源管理器中并找到该R.exe文件。然后,我可以在设置页面中将 R 连接到 VS Code 终端,但脚本不会向终端发送信息。这意味着ctrl+entr用光标在 temp.R 文件中点击会导致消息:“r.executreInTerminal找不到命令”。

这里有一个屏幕截图。

我的用户设置 (JSON) 现在如下所示:

{
    "python.defaultInterpreterPath": "C:\\Users\\louis\\AppData\\Local\\Programs\\Python\\Python310\\python.exe",
    "files.associations": {
        "*.rmd": "markdown"
    },
        // R Options
        "r.rpath.windows": "C:\\Program Files\\R\\R-4.2.1\\bin\\R.exe",
        "r.rterm.windows": "C:\\Program Files\\R\\R-4.2.1\\bin\\R.exe",
        "r.terminalPath": "C:\\Program Files\\R\\R-4.2.1\\bin\\R.exe"
        "r.lsp.path": "C:\\Program Files\\R\\R-4.2.1\\bin\\R.exe",
        "r.lsp.debug": true,
        "r.lsp.diagnostics": true,
        "r.alwaysUseActiveTerminal": true,
        "r.sessionWatcher": true, 
        "r.bracketedPaste": true,
}
Run Code Online (Sandbox Code Playgroud)

错误在哪里?为什么两个面板不互相交谈?为什么这就像拔牙一样?

apc*_*53c 8

看起来您可能拥有来自两个不同 VS Code R 扩展(vscode-R 和 R Tools)的设置。r.executeInTerminal尝试删除(这是 R 工具命令)的键绑定。然后Ctrl-Enter应该执行r.runSelection(这是一个 vscode-R 命令)。