これは何?
jupyter notebookでRを使うための設定と使い方です。
私は普段、Rのコードをガッツリ書く必要があるときはRStoduioを使います。が、ちょっとだけRのコードを試したいときや、コードの実行結果を配布したいとき1には、jupyter notebookを使います。
jupyter notebookの使い方に慣れていて、Rも使う機会があるよ、という人にオススメです。
Rカーネルを使う設定
パターン①Anaconda & Rを未インストールの場合
RもAnacondaで管理(Anaconda経由でインストール)してしまうのがいいと思います。
pythonのようにパッケージがpipとconodaで競合する、みたいなことが起こり得ないので、base環境や普段使っている環境に入れても問題はない…はずですが、pythonとRのパッケージを混ざて管理するのもなんとなく気持ち悪いので、conda create
でR実行用に専用の環境を作ります。(その方が気分的にすっきりするため)。
以下、conda
コマンドが使えるコンソール(Anaconda Promptか、パスが通ってるならコマンドプロンプトでもOK)で実行。
①-1.環境の作成と有効化
conda create -n renv python=3.6 -y
conda activate renv
※何をしている?
conda create
で新しい環境を作っています。
-n renv
で新しく作る環境をrenvという名前に指定しています。(renvの部分は任意の名前に置き換え可能)
python=3.6
で新しい環境にインストールするpythonのバージョンを指定しています(3.6じゃなくてもいいし、この部分を丸ごと省略してもいいです2)。
-y
はことあと出てくる確認にyesと答えるオプションです。(インストールを実行しますか?みたいな確認が入るので)
conda activate
で作成した環境に入っています。macとかlinuxだとsource activate
になるようです。
ちなみに環境から出るのはconda deactivate
(macとかはsource deactivate
)です。
①-2. R関係インストール
conda install -c r r r-irkernel r-essentials rstudio -y
※何をしている?
conda install
でAnaconda cloudから必要なもの(下記)をインストールしています。-c r
はAnaconda cloudのチャンネル指定です。R関係はrチャンネルから取得します。
2つ目のr
はR本体です。Rのバージョンを指定したければr==3.6
みたいな形式で指定してください。
r-irkernel
はjupyterにRを認識させるためのRカーネルです。
r-essentials
はRでよく使われるRのパッケージ群です。
rstodio
はRのIDEであるRStoduioをインストールしています。jupyterだけで使えればいい人には不要です。
おまけ:nbextensionのインストールと有効化
ここはオプションです。jupyterの拡張機能が不要なら飛ばしてください。
conda install -c conda-forge jupyter_contrib_nbextensions jupyter_nbextensions_configurator -y
jupyter contrib nbextension install --sys-prefix
jupyter nbextensions_configurator enable --sys-prefix
※何をしている?
jupyterの拡張機能を使う設定です。拡張機能が使えると何が嬉しいかについては調べたらたくさん情報が出てくるので、今更説明することもないかと。
たとえば、この投稿とか参考にしたらよいと思います。
1行目のconda install
で拡張機能コレクション(jupyter_contrib_nbextensions
)とインターフェイス(jupyter_nbextensions_configurator
)を取得しています(いずれもconda-forge
チャンネルから取得)。
2行目で拡張機能本体(javascriptやcssファイル)を、pythonのsys.prefixにインストールしています。つまり、今有効化しているrenvの環境内に拡張機能をインストールしています3 4。
3行目で拡張機能のインターフェイスを有効化しています。
以上で、パターン①の設定は終了です。
パターン②Anaconda以外 | Anacondaだが公式からRインストール済みの場合
すでに公式経由でRをインストールしている場合は、jupyterに認識させるR用のカーネルをインストールして登録するだけです。
Anaconda以外でRを未インストールの場合は、公式からR本体をインストールしてください。RStudioが必要なら、それもRStudioの公式から入れてください。
あとはもちろん、jupyter自体がインストールされていることも前提条件になります。
jupyter用Rカーネルのインストールと登録
Rで実行してください。
install.packages('IRkernel')
IRkernel::installspec()
※何をしている?
1行目でjupyter用のRカーネルをインストールしています。
2行目で、現在実行しているRをjupyterから利用できるように登録しています。
もし複数バージョンのRを使用している&それぞれのバージョンをjupyterで利用したい場合は、以下のように名前を指定して別々に登録してください。
# 複数のバージョンを登録する場合の例
# Rバージョン3.6で実行
IRkernel::installspec(name = 'ir36', displayname = 'R 3.6')
# Rバージョン3.4で実行
IRkernel::installspec(name = 'ir34', displayname = 'R 3.4')
※何をしている?
現在実行しているRをjupyterから利用できるように登録しているのは前述と一緒ですが、複数バージョンを分けて管理できるように名前をつけています。
name
の方がシステムで扱う名前、displayname
が画面で表示される名前です。
ほかのバージョンと名付けが被らないように、例みたいにバージョンを絡めた名前をつけるといいと思います。
おまけ:nbextensionのインストールと有効化
ここは前述のパターン①と同様にオプションです。
Anacondaの人はパターン①と同一内容を、Anaconda以外なら1行目をpipに変えて以下のように実行してください。
pip install jupyter_contrib_nbextensions jupyter_nbextensions_configurator -yjupyter contrib nbextension install --sys-prefix
jupyter nbextensions_configurator enable --sys-prefix
※何をしている?
パターン①で解説したので省略。
jupyterでRを使う
jupyter notebook起動
普通にコンソールから起動します。
※パターン①で設定した場合は、conda activate renv
をしてR実行用環境に入ってから起動。
jupyter notebook
ノートブックをRで新規作成
NEWをクリックすると、Rで新規notebookが作れるようになっていると思います。Rを選択してください。
※パターン②で複数のRを登録した方は、ここにdisplayname
で設定した名前が並びます。実行したいバージョンを選択してください。
使用例
あとは普通にnotebookを使います。セルにコードを書いて実行していくだけです。
install.packages
でのパッケージ追加も問題なくできますし、パターン①で導入した方はtidyverse群とか、有名なパッケージは導入済みです(r-essentialsを入れてあるので)。
いくつか例です。
データの表示
library(tidyverse)
df <- iris
df %>% head()
df %>% glimpse()
df %>% summary()
pythonのpandas.DataFrameのように、データフレームが綺麗に表示されています。
グラフ表示
df %>% ggplot() +
geom_point(
mapping = aes(
x = Sepal.Length,
y = Sepal.Width,
color = Species
)
)
mpg %>% ggplot() +
geom_point(
mapping = aes(
x = displ,
y = hwy,
color = cyl
)
) +
facet_wrap(
~ class,
nrow = 2
)
グラフもしっかり表示されています。 久しぶりに使ったけど、やっぱりggplot2はグラフが綺麗ですね。
覚えておくと役立つこと
ショートカット系
ショートカット系は通常のnotebookで使えるショートカット(shift + enter
とか)に加えて下記が利用できます。
(RStudioと同じなので覚えやすいですね)
alt + -
で代入演算子である左矢印(<-)ctrl + shift + m
でmagrittrのパイプ(%>%)- オブジェクト上にカーソルを置いて
F1
で、ドキュメント表示
F1での表示例:summary関数上でF1を押した場合
グラフ系
RStudioだとグラフ用のウィンドウでサイズが調整できますが、notebookだとそれができません。なので、グラフの縦横幅などをいじりたい場合はコードを書いて設定します。
- グラフの縦横幅のコントロールは
options
で
例:
options(
repr.plot.width=10,
repr.plot.height=8
)
- グラフのフォントのコントロールは
theme_set
で
例:
theme_set(
theme_gray(
base_size = 18,
base_family = ""
)
)
※base_family
で日本語フォントを指定すれば、日本語の文字化けに対処できます。
そのほか、themeについては公式をご確認ください。
公式リファレンス:
その他、これも覚えていたら役立つよ、ってのがあればコメントで教えてください。間違いのご指摘も歓迎です。
-
配布に関しては「RMarkdownを使えばええやん」ってのはごもっともなんですが、しばらく使わないうちに書き方を忘れちゃったので…
↩ -
R専用環境作るのになんでpython?という疑問はごもっともですが、
↩conda create
で環境を作るとpythonは必ずインストールされます。なので、一応使い慣れたバージョンを指定しているだけです。どうせこの環境ではpythonは使わないので別に省略してもいいのですが、何のバージョンが入るのかおまかせにするのも気持ち悪い、という気分的な問題です。 -
sys.prefixについては詳しくは公式ドキュメントをどうぞ。
↩ -
※過去にbase環境や他の環境で
↩--user
や--system
を使って拡張機能をインストール済み&有効化済みかつ、それらの環境と同一の拡張機能の設定を使いたいならば、2行目以降の実行は不要です。その場合、conda create
で作った環境の外(ユーザーディレクトリかシステムディレクトリ内のjupyterディレクトリ)に拡張機能がインストールされているため、すでに環境を横断して拡張機能が利用できるようになっています。