R と RStudio

Rのバージョンについて

この授業が始まる2023年10月3日時点では、R 4.3.1 (2023年6月16日公開)が最新バージョンである。 しかし、情報演習室のコンピュータにインストールされているのは R 4.2.2 で、2023年度中は更新されないので、この授業では R 4.2.2 を利用する。R.4.1.0 以降のバージョンなら大きな問題は生じないと思われる。自分のパソコンに R 4.2.2 をインストールしたい場合は、以下のリンク先で手に入れることができる。

RStudio のバージョンについて

昨年度の計量経済学の授業終了後に、RStudio のバージョン 2023.09 が公開されたので、古いバージョンを使っているなら、2023.09 以降 に更新したほうがよい。自分が使っているバージョンは、RStudio メニューの “About RStudio” で確認することができる。この資料を作成している時点での最新版は、2022.09.0 である。最新版にするためには、RStudio Desktop をインストールし直せばよい。 情報演習室のコンピュータには、少し古いバージョン のRStudio がインストールされている。


プロジェクトの作成

新しい授業なので、RStudio で新しいプロジェクトを作っておこう。 名前の付け方はルール通りならなんでもいいが、たとえば metrics_applied などにしておけばよいだろう。 プロジェクトができたら、データ保存用の data ディレクトリと、図を保存するための figs ディレクトリを以下のコードで作る。

dir.create("data")
dir.create("figs")


必要なパッケージのインストール

次回以降、さまざまなRパッケージを利用する。 各回で必要なパッケージはそれぞれの実習資料の冒頭に記すが、全体を通じて利用するパッケージをここで紹介する。必要に応じてインストールすること。情報演習室のコンピュータには、ほとんどのパッケージがインストール済みである。

まず、全体を通じて tidyverse を利用する。統計学2と計量経済学でも利用したので説明不要だ思うが、 tidyverseはggplot2dplyrtibblereadr などの便利なパッケージをまとめたパッケージ群である。 tidyverseを使うと、データの整形・変形を簡単に行えるようになり、コードの可読性を高めることができるというメリットがある。データの可視化には、tidyverse の一部である ggplot2 を使う。 このパッケージをインストール済みでない場合は、 

install.packages("tidyverse")

でインストールする。

次に、パッケージの読み込みとインストールに利用する pacman パッケージをインストールする。

install.packages("pacman")

これまでの授業では、 install.packages() でパッケージをインストールし、インストール済みのパッケージを library() で読み込むという、Rパッケージの標準的な使い方をしてきた。しかし、この方法を使う場合、 library() で読み込むパッケージをあらかじめインストールしておかなければならない。Rで分析をする際には多数のパッケージを利用するので、インストール済みかどうか全部覚えておくのは難しい。この問題は、 pacman::p_load() を使うことで(多くの場合)解決する。 pacman::p_load() というのは、pacmanパッケージに含まれる p_load() 関数という意味である。このように、 パッケージ名::関数名() という書き方があったことを思い出してほしい。この表記を利用すると、異なるパッケージに含まれる同じ名前の関数を区別して使うことができる。

p_load()の利点は2つある。第1に、インストール済みでないパッケージを指定すると、それをインスト-ルしてから読み込んでくれる。ただし、これが使えるのはCRANに登録されているパッケージだけである。CRANに登録されていないパッケージのインストール法は後ほど説明する。第2に、複数パッケージの読み込みが一度に簡単にできる。

pacmanを使って、既にインストール済みの tidyverse と、まだインストールしていないかもしれないpatchworkestimatrremotes の計4つのパッケージを同時に読み込んでみよう。

pacman::p_load(tidyverse, 
               patchwork, 
               estimatr, 
               remotes)

これで4つのパッケージが使えるようになっているはずだ。tibble とggplot2 (どちらもtidyverseに含まれる)、patchwork が使えることを確認するために、以下のコードを実行してみよう。

set.seed(2021-03-21)
myd <- tibble(x1 = rnorm(100),
              x2 = rnorm(100))
p1 <- ggplot(myd, aes(x = x1, 
                      y = after_stat(density))) +
  geom_histogram(binwidth = 0.25, 
                 boundary = 0, 
                 color = "black") + 
  xlim(-4, 4) + 
  ylim( 0, 0.5)
p2 <- ggplot(myd, aes(x = x2, 
                      y = after_stat(density))) +
  geom_histogram(binwidth = 0.25, 
                 boundary = 0, 
                 color = "black") +
  xlim(-4, 4) + 
  ylim( 0, 0.5)
plot(p1 + p2)

このコードでは、tibbleで作ったデータフレーム (tibble) を使って gglot2で図を作り、作った2つの図を patchwork で並べて表示している。

pacman を使わずに複数のパッケージを一度にインストールし、それらを読み込むためには、次のようなコードを書く必要がある。

install.packages(c("patchwork", "estimatr", "remotes"))
sapply(c("tidyverse", "patchwork", "estimatr", "remotes"),
       require, character.only = TRUE)

一見してわかるとおり、pacman を使ったほうが楽である。

ただし、CRAN に登録されていないパッケージは手動でインストールする必要がある。GitHub にアップロードされているパッケージは、devtools::install_github() または remotes::install_github() でインストールする。例として、宋財泫 (SONG Jaehyun) 氏がGitHub で公開している BalanceR パッケージ をインストールしてみよう。

remotes::install_github("JaehyunSong/BalanceR")

インストールさえ済めば、pacman::p_load() で読み込みができる。

pacman::p_load(BalanceR)

これで BalanceR パッケージが使える。

このように、GitHub からパッケージをインストールする際には、パッケージ名だけでなく、そのパッケージを公開しているGitHubのアカウント名(この例では JaehyunSong)を併せて指定する必要がある。

最後に、ggplot2 の図で日本語を正しく表示するための下準備をしておこう。 Windows では、片桐智志氏が作成した fontregisterer を利用する。このパッケージについては本人の解説 が詳しい。 Windowsユーザは、このパッケージをインストールする。

remotes::install_github("Gedevan-Aleksizde/fontregisterer", 
                        repos = NULL, type = "source")

あとは、使用するOSにかかわらず以下のコードブロックをpacman::p_load(tidyverse) の後に実行すれば日本語が正しく表示される(はず)。もちろん、以下のうち自分のOSに関係がある部分だけを実行してもよい。Linux の場合は IPAexGothic フォントをあらかじめインストールしておく必要がある(他のフォントを使ってもよい)。

if (.Platform$OS.type == "windows") { # Windows
  library(fontregisterer)
  my_font <- "Yu Gothic"
} else if (capabilities("aqua")) { # macOS
  my_font <- "HiraginoSans-W3"
} else { # Unix/Linux
  my_font <- "IPAexGothic"
}
## ggplot2 用の設定
theme_set(theme_gray(base_size = 9,
                     base_family = my_font))

試しに、日本語を含む図を表示する。

p3 <- p1 + 
    labs(x = "エックス1", y = "確率密度")
plot(p3)



授業の内容に戻る