前編ではRStudioに標準で搭載されている便利な機能と、機能を手早く起動するコマンドパレットやキーボードショートカットについて紹介しました。後編ではアドインやRStudioの設定によって、自分好みの操作性を追求してみましょう。
アドインによる機能の拡張
RStudioの機能はアドインで拡張できます。アドインはパッケージの一部として定義されているので、パッケージがCRANに公開されていれば、install.
関数で簡単にインストールできます。
本稿では、アドインによってコーディングを効率化する方法として、stylerパッケージによるコードの整形と、reprexパッケージによる再現可能なコードの実行例の作成の2つを紹介します。
コードの整形
フォーマッタを使ってコードを整形すると、コードの改行やスペース、インデントの入れ方、1行あたりの文字数などを、コーディング規約に適合させられます。一定のコーディング規約に則ったコードは、読み進めやすく、特に第三者がコードを読む際の助けになります。
R向けのコーディング規約として有名なものに、tidyverse版とGoogleによる派生版があります。一度は目を通して、日頃から意識的に従うと良いでしょう。
一方で完全に規約通りなコーディングは、煩わしく負担です。そこでフォーマッタを導入すると、コードの整形は機械に任せて、人はコーディングに集中できるようになります。
R言語向けの著名なフォーマッタにはstylerパッケージやformatRパッケージがあります。ここでは、アドインを提供しており、tidyverse版コーディング規約を採用しているstylerパッケージを紹介します。
stylerパッケージをインストールしてから、本連載の第1回で紹介したコマンドパレットを使って
これでアドインを使えるようになりましたが、キーボードショートカットを使うと、毎回のようにアドインを検索する手間から解放されます。アドインの中でもa+b+c
と書いてある部分に適用するとa + b + c
に変わり、二項演算子の前後にスペースが加わります。
ところで、せっかくコーディング規約に従うのであれば、選択範囲だけではなく、ファイル全体を整形すべきでしょう。
「Style active file」options
関数を使った設定が必要です。
# stylerパッケージによる整形結果を自動で保存する
options(styler.save_after_styling = TRUE)
R起動時に自動設定したい場合はusethis::edit_
関数を実行すると開くファイル内に、上記のコードを追記してください。
再現可能なコードと実行結果の共有
データの分析結果をコードと共に共有するにはR Markdownが便利です。R Markdownを使ったレポーティングに関しては
レポーティング全体を見てもらう前に、もっと手軽にコード片の実行結果をコピー&ペーストで共有したい場面もあります。
- エラーの原因を尋ねたい
- 関数の使い方を伝えたい
- 試しに分析してみた結果を共有したい
一方で、再現性が重要性であることに変わりはありません。相手に試してもらったときに結果が期待と異なると、双方の差異を探すためにコミュニケーションコストが増大します。
reprexパッケージは、指定したコードに対し実行結果を追記して、コピー&ペーストしやすい形式に出力します。パッケージ名は
ではreprexパッケージをインストールして、アドインを試してみましょう。ggplot2パッケージのdiamondsデータセットの分析結果を部分的に共有する状況を考えます
まず、図3の1つ目のチャンク
- 必要な部分を選択する
- コマンドパレットを起動する
- コマンドパレットから
「Reprex selection」 を選択する
次に、図3の散布図が表示されている2つ目のチャンク
残念ながら次のようなエラーが発生しています。
#> Error in ggplot(diamonds): could not find function "ggplot"
2つ目のチャンクはggplot2パッケージ由来の関数ggplot
など)
実際に2つ目のチャンクの冒頭にlibrary(ggplot2)
を加えると、
library(ggplot2)
ggplot(diamonds) +
aes(carat, price) +
geom_point()
Created on 2022-08-07 by the reprex package (v2.
なお、作成した図はimgurという画像共有サービスにアップロードされます。URLを知っている人であれば誰でもアクセスできるので、取り扱うデータには注意してください。
その他のアドイン
本稿で紹介した以外にもアドインは多数あります。たとえばggThemeAssistパッケージには、ggplot2パッケージで作成したグラフの見た目を調整するアドインがあります。taskscheduleRパッケージやcronRパッケージには、スクリプトの定期実行を設定するアドインがあります。
どんなアドインがあるかを調べるには、Dean Attaliによる
アドインを自作したければ、自作関数にキーボードショートカットを割り当てられる、shrtctsパッケージを使う方法が簡単です
RStudioのカスタマイズ
RStudioよって得られるコーディング効率の向上は、コマンドパレットやアドインといった必要に応じて利用する機能だけにとどまりません。RStudioの設定にこだわれば、常に効率化の恩恵を享受できます。
本稿では筆者
ペインレイアウトの変更
RStudioの画面は4つのペインで田の字に分割されています。デフォルトでもそれなりに使えますが、目線のバランスやコードの実行結果の閲覧性といった観点から、筆者が採用しているレイアウトを紹介します
設定の変更にはコマンドパレットから
このレイアウトはSourceペインを基準に考えています。複数のペインから構成されるRStudioはウィンドウサイズが小さいと不便なので、全画面で使用する時間が長くなります。デフォルトのままでSourceペインを左側に配置していると、文字の開始位置もディスプレイの左側に位置し、必然的に目線が左に集中します。そこでSourceペインを右側に配置すると、文字の開始位置を調整できます。たとえばソースコードの編集に集中するときは、目線を自然にディスプレイの中央に戻すことができるように、左端の区切りを左にずらします。
ソースコードがRファイルで、実行結果の表示領域を大きくしたいときは、Sourceペインの左端の区切りを右にずらします。すると左上のConsoleペインや左下のPlotsペインの幅が大きくなります。また、左下にはHelpペインもあるので、ヘルプを参照しながら右側でソースコードを書くといった使い方もできます。
右下のペインはEnvironment
複数のファイルを並べて編集することもできます。コマンドパレットから
RStudioの機能に複数のファイルを並べる
コードの診断
RStudioには、編集中のコードを診断して、バグにつながりうる箇所を随時指摘する機能があります。デフォルトで有効化されている設定もありますが、以下を有効化することをおすすめします。深刻度に応じて警告なら
- Check arguments to R function calls
- 関数呼び出しに対して、引数の不足や引数名の間違いを指摘
- Check usage of ‘<-’ in function call
- 関数の引数の指定と同時に変数定義をしていれば警告
(例: print(data <- mtcars[, 1:5])
)
- 関数の引数の指定と同時に変数定義をしていれば警告
- Warn if variable used has no definition in scope
- 変数定義が参照可能な範囲になければ警告
- Warn if variable is defined but not used
- 定義したが未使用な変数があれば警告
- Provide R style diagnostic (e.
g., whitespace) - コーディングスタイルを確認
- (例えば
if(TRUE){print(1)}
のように、if文の条件式を囲う括弧の前後に半角スペースがなければ指摘。)
指摘事項はしばしばバグの温床になるので、真摯に対応しましょう。コードを実行するたびに直すよりもずっと効率的です。
まとめ
RStudioは豊富な機能を備えた統合開発環境です。本稿ではアドインやRStudioの設定を通じて、コーディングにおける利便性を追求する方法を紹介しました。前編で紹介したコマンドパレットは、本稿でも活躍した便利な機能です。未読の方はぜひご参照ください。
本連載はRユーザの作業を効率化してくれる外部ツールを紹介していきます。R言語とさまざまなパッケージを駆使して分析効率の向上を主眼においた書籍には、本連載の執筆陣が手掛けた