井出草平の研究ノート

VSCodeでRを使うための設定

VSCodeで無料でGitHub Copilotが使えるようになった(制限あり)。

www.itmedia.co.jp

gigazine.net

現在、月10ドルのGitHub Copilotを契約している。コードをたくさん書くからではなく、RStudioでの補完機能用のためだけである。せっかく無料でGitHub Copilotが使えるのだから、この月10ドルを節約するために、RのコードをVSCodeで書いてみることにした。「リアルタイムのコード補完は月間2000回まで、AIとのチャットは月間50回まで」ということなので、自分の用途的には十分な気がする。

結論からいうと、やや使いにくさは残るものの、RStudioっぽい使い方はだいたいできるので、VSCodeを使っても問題はなさそうである。ただ、設定がいろいろとややこしいのと、RStudioほどRに最適化されていないので、使いにくさは残る。

R Extensionのインストール

marketplace.visualstudio.com

VSCode拡張機能からインストールできる。

公式解説はこちらなど

code.visualstudio.com

marketplace.visualstudio.com

Rにインストールするパッケージ

Rにもパッケージのインストールする必要がある。 下記の2つである。

install.packages("languageserver")
install.packages("httpgd")

インストールしておくとよい拡張機能

拡張機能はまだ良いものがあるかもしれないが、あまり知らないので、これらの拡張機能はとりあえずのもの。

Rの場所指定・バージョンの指定

Rがもともとデフォルトの場所にインストールされていれば何も設定しなくても見つけてくれるようではあるが、見つけてくれなかった場合や、Rのバージョンを変えたい場合には下記から設定する。

一つはR Extensionの張機能の設定(GUI)から書き込む方法である。

CUIの場合はコマンドパレット(Ctrl + Shift + P)にsettings.jsonと打ち、VSCodeの設定を編集する。
settings.jsonに下記を追加する。

    "r.rterm.windows": "C:\\\\Program Files\\\\R\\\\R-4.4.1\\\\bin\\\\R.exe",

OSごとの設定例:
Windows:

"C:\\Program Files\\R\\R-4.4.1\\bin\\R.exe"

以下のように書かない。

"C:\Program Files\R\R-4.4.1\bin\R.exe"

Linux:

"/usr/bin/R"

Mac

"/Library/Frameworks/R.framework/Resources/bin/R"

R Extensionの他の設定

Rの場所以外に設定しておくとよいものが4つあるようだ。

コマンドパレット(Ctrl + Shift + P)にsettings.jsonと打ち、VSCodeの設定をするsettings.jsonを編集する。
R Extension関係の設定下記の4つを入れておく。

    "r.sessionWatcher": true,
    "r.plot.useHttpgd": true,
    "r.workspaceViewer.showObjectSize": true,
    "r.workspaceViewer.removeHiddenItems": false,
    "r.rmarkdown.knit.openOutputFile": true,

"r.sessionWatcher": true Rセッションウォッチャー機能を有効化。この機能を有効にすると、Rセッションの状態(現在のワークスペース、オブジェクト、プロットなど)をリアルタイムで監視し、VSCode内で表示・管理できるようになる。ワークスペースビューアが使用可能になる。オブジェクトの一覧表示やデータフレームのプレビューがVSCode内で可能になる。

"r.plot.useHttpgd": true プロットの表示に、httpgd パッケージを使用する。httpgd は、Rで生成したグラフをブラウザベースで表示できるプロットデバイスで、VSCodeのビューアと統合されている。グラフやプロットがVSCode内でインタラクティブに表示される。

"r.workspaceViewer.showObjectSize": true ワークスペースビューアで、各オブジェクトのサイズを表示する。Rセッションのワークスペースビューアに、各オブジェクト(データフレーム、ベクトル、リストなど)のメモリ使用量(バイト数)が表示される。

"r.workspaceViewer.removeHiddenItems": false ワークスペースビューアで、Rセッション内の「隠しオブジェクト」(名前が.で始まるオブジェクト)を表示するかどうかを設定する。falseの設定で隠しオブジェクトもワークスペースビューアに表示する。

"r.rmarkdown.knit.openOutputFile": true
R MarkdownのKnit(ニット)プロセス完了後に、生成された出力ファイル(HTML、PDFなど)を自動的に開く機能を有効化。この機能を有効にすると、Knitコマンド実行後に、VSCodeや既定のブラウザで生成物が自動的に表示される。出力結果を即座に確認できるため、編集・デバッグの効率が向上する。

リガチャ可能なフォントにする

コマンドパレット(Ctrl + Shift + P)にsettings.jsonと打ち、VSCodeの設定をするsettings.jsonを編集する。

Rでは<-を多用するのでフォントが合体してくれると可読性は上がる。
私はCascadia Code PLを使ってているので、GitHubからダウンロードしてWindowsにインストールしておく https://github.com/microsoft/cascadia-code

settings.jsonは下記を追加。

    "editor.fontFamily": "'Cascadia Code', 'メイリオ', 'Arial', Consolas, 'Courier New', monospace",
    "editor.fontLigatures": true,

editor.fontLigatures": trueリガチャをするという設定。

ちなみに、この設定は日本語もメイリオにしてある。 最近はデフォルトの日本語フォントであるAptosが太字で見にくいので、メイリオに変更している。

括弧の色分け

数年前まで、括弧の色分けは「Bracket Pair Colorizer 2」という拡張機能が広く使われていたが、ネイティブの機能となった。

コマンドパレット(Ctrl + Shift + P)にsettings.jsonと打ち、VSCodeの設定をするsettings.jsonを編集する。

"workbench.colorCustomizations": {
  "editorBracketHighlight.foreground1": "#FF0000",  // 赤
  "editorBracketHighlight.foreground2": "#00FF00",  // 緑
  "editorBracketHighlight.foreground3": "#0000FF",  // 青
  "editorBracketHighlight.foreground4": "#FF00FF",  // 紫
  "editorBracketHighlight.foreground5": "#00FFFF",  // シアン
  "editorBracketHighlight.foreground6": "#FFFF00"   // 黄色

チャンク記号{R}を挿入する設定

.Rmdファイルを開いているときに、rchunkというスニペットがデフォルトで使える。基本、これで問題はない。

しかし、RStudioでは[ctrl]+[alt]+[I]でチャンク記号の生成ができていたので、これを再現するには、VSCodekeybindings.jsonへ設定を追加すればよい。

コマンドパレット(Ctrl + Shift + P)に「Preferences: Open Keyboard Shortcuts (JSON)」といれると、keybindings.jsonの編集ができる。下記をコピペ。

    {
        "key": "ctrl+alt+i", 
        "command": "editor.action.insertSnippet",
        "when": "resourceLangId == 'rmd'",
        "args": {
            "snippet": "```{R}\n$0\n```"
        }
    }

whenの設定は"resourceLangId == 'rmd'"としておく。同じキーバインドに他のショートカットもふられているので、.Rmdの編集をしている時だけ、Rのチャンクを出せるようにと限定をつけておくと混乱が起きない。

RStudioと同様に使うには

ファイルの拡張子は.Rmd

VSCodeで編集するときも、RStudioと同じ拡張子である。共通化できるのは大変良い点である。

左メニュー

左メニューからRのメニューを開くとR関連の情報が確認できる。

パッケージのインストール

アップデートのあるパッケージをインストールする機能もある。

パッケージの更新

環境のクリーンナップ

読み込んだデータフレームなど

オブジェクトを確認する

下記の場所からオブジェクトは確認できる。

ちなみにデータの場合Viewをクリックするとタブが開き、データの確認ができる。

コードでもコンソール(ターミナル)に表示させて確認できる。

ls()  # 現在の環境にあるオブジェクトを一覧表示
objects()  # 同様にオブジェクトを確認

読み込んだパッケージを確認する

下記の場所から確認できる。

RStudioの方もたいしてわかりやすいわけではないので大差はないだろう。

コードを走らせる

Run Chunkをクリックする。RStudioでは▶だったものである。

コンソール(ターミナル)の表示を消す

RやRStudioでは[ctrl]+[L]でコンソールのクリアができた。 VSCodeのR Extensionでは作動しないので、問題なければそのまま、是非ほしい場合は、keybindings.jsonに追加する

コマンドパレット(Ctrl + Shift + P)に「Preferences: Open Keyboard Shortcuts (JSON)」といれると、keybindings.jsonの編集ができる。下記をコピペ。

    {
        "key": "ctrl+l",
        "command": "workbench.action.terminal.clear",
        "when": "terminalFocus"
    }

ファイルの場所を作業ディレクトリに設定

設定では変えられなようだ。 都度都度、Rmdに直接書き込む必要がある。コードは下記。

current_file <- normalizePath(rstudioapi::getSourceEditorContext()$path)
setwd(dirname(current_file))