Help us understand the problem. What is going on with this article?

RStudioのコード補完をもっと使ってみよう

More than 3 years have passed since last update.

この記事はRStudio Advent Calendar 2016の10日目の記事です。

コード補完とは

コード補完とは,コード入力の途中で文脈に沿うようなコードを提案して補完してくれる,そんな感じの機能です。もちろんRStudioにもこの機能が備わっており,関数名などを入力している途中でTabキーで活用できます:

hokan_01.png

なおRStudioのコード補完はかなり便利で,いろんな補完をしてくれます。今回はそのいくつかをご紹介します。

関数名の絞り込み

関数名を入力していってTabキーを押して候補を表示させると,かなりの数が候補に上がる場合があります。この時,その続きを入力していくと絞り込みがなされます

これが地味に便利です。だからちょっと関数名を入力したらTabキーを押し,適度に文字を追加して確定のTabキーでやればスムーズです。実に気持ちいいので試してみてください。

パッケージ名の補完

Rを使っていくとまずはlibrary(kosaki)といったようにライブラリを読み込むことになるのが通常。短いパッケージ名ならまだいいですが,長いパッケージ名(DiagrammeRなど)だとかなり面倒ですし,なによりタイポが辛いです。

でも安心してください。RStudioはパッケージ名も補完してくれます:

hokan_02.png

もちろんインストールしてあるパッケージしかリストアップしませんが,かなり強力です。なおこれはlibrary()の内部だけではなく,パッケージ名::と呼び出す時でも有効です:

hokan_2-1.png

また,これで指定したいパッケージで続けてTabキーを押せば,そのパッケージの関数一覧が表示されます:

hokan_2-2.png

もちろんこのあとも絞り込んでいけるので,ある程度入力してTabキーを押せばスムーズでしょう。

Rオブジェクト名の補完

RStudioで補完してくれるのは関数名だけではありません。Rオブジェクトについても補完してくれます:

hokan_03.png

Rオブジェクトとしてdata.frameを読み込んでいるならば,上のような感じで出てきます。またはじめから組み込まれているデータセットも保管してくれます。これもまた便利です。

オブジェクト内の要素を補完

要するに,以下のような感じです:

hokan_04.png

関数のカッコ内でTabキーを押すと,このような感じになります。おそらく引数として入るであろうものを候補としてあげてくれます。これが非常に便利です。なお,これはまだGlobal.Envに入ってなくても<ーとかコード上で生成されるであろうものに対しても拾ってくるのを確認してます…。

いろいろなパターンを試してみてください。例えばリストに関しては,こんな感じになります:

hokan_06.png

ここから…

hokan_07.png

こんな感じへと,Tabキーで繋いでいけます。

ディレクトリ名・ファイル名を補完

要するに,以下のような感じです:

hokan_08.png

ダブルクォーテーションを入れてTabキーを押すと,このように作業ディレクトリ内のファイル一覧を表示します。ファイルを選択すれば,そのままファイル名が補完されます。なおここでディレクトリをTabキーで選択すると…

hokan_09.png

このように,ディレクトリ名が入力補完されたうえで,その中へと進んで候補が出てくるようになります。これは非常に協力なので,ぜひ今後は活用してみてください。

コードスニペット機能

スニペットとは

現在のRStudioには,コードスニペット機能が実装されています。スニペット機能とは,簡単に言うとよく使うようなフレーズを登録しといて,簡単に呼び出せて入力を楽にするという機能です。コード補完とイメージは近いのですが,ちょっと違います。例としてfunを取りあげます。

funと入力すると,以下のように表示されます:

snippet_01.png

この一番上にある,メモみたいなアイコンがついたfunというのが,funのスニペットです。これを選択してTabキー(あるいはShift + Tabキー,詳しくは脚注参照してください→)1を押すと,以下のようになります:

snippet_02.png

この時,自動的にfunction()関数が挿入されるのですが,function関数が出てくる場合によくあるパターンを想定して,それも自動的に入力されるようになってます。なおはじめにnameが選択状態にあり,このまま格納する名前を入力します。このあとで**さらにTabキーを押すと,次のvariablesへと自動的にシフトします。
このように,まるで先回りして準備してくれている感覚で,さくさくと入力ができるようになるわけです。慣れるとすごく便利です。

RStudioのスニペット一覧

RStudioにははじめからいろいろなスニペットが登録されています。確認方法は,メニューバーの[Tools] - [Global Options...]をクリックし,ダイアログボックス左側の[Code]を選択します:

snippet_03.png

すると,上記のように表示されるので,一番下のSnippetsから,Edit Snippets...をクリックしてください。すると,スニペット編集画面になります:

snippet_04.png

思ったより少なめな印象ですが,いろんなファイル形式に対応しています。なおRmdはMarkdownと同一と考えてください。記法については眺めていればなんとなくつかめるかと思います。なおこのスニペットは自分で編集したり保存したり共有したりすることができます

このSnippetについては,以下の資料をぜひ確認してください:

なお,R Scriptsファイル以外でそれぞれのファイル形式用のスニペット(とコード保管も?)を利用したいなら,一度そのファイルを保存してから試すようにしてください。そうしないとおそらくはうまくいかないと思います。

さらに,StanやHTMLにも対応しています。これらは一部の方には非常に魅力的に映るはずです。ぜひ試しましょう。

Enjoy!


  1. 途中までの入力で,画像のように候補としてスニペットが出ているときはTabキーでOkですが, funと全て入力した場合にはTabキーでは反応しません。Shift + Tabキーとなります。てか基本は該当するスニペットのスペルを打ち切ってからShift + Tabキーです。この画像のパターンは「これを使いたいんじゃないの?」と気を使ってRStudioが出してきてくれてる,そういう感じです。そういう意味では補完機能ともいえるのかな? 

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away