(1) Rの基本操作①:超基本操作・パッケージ

作者

成田慶之

更新日

2026年2月19日

1 はじめに

本資料は統計言語Rおよび、そのIDE(統合開発環境)であるR Studioを用いて計量経済分析を行なう際のコードの書き方を教えるものである。本資料の目標として、相澤ゼミに所属するゼミ生が、計量経済学の方法論(OLS回帰分析や固定効果モデル等)を用いてレポート・卒業論文を書く際に、一通りの作業を滞りなく実行出来るようになることを目指す。

*本資料はRおよびR Studioをダウンロードした前提で進める。 今からダウンロードする場合、ネット上にダウンロード方法が説明されたWebサイトが多数存在するため、まずはそちらを参照されたい。

本章では、Rの超基本操作と、Rで分析を行なう際に必要不可欠なパッケージについて説明する。

2 Rの超基本操作

2.1 準備(コードはどこに書くのか?)

まず第1に、私たちはR Studioを用いて分析を行なう(Rは操作を行なうための言語)。

R Studioを開くと、以下の様な画面が表示されるはずだ。

R Studio起動時の画面とR Scriptの作成

そうしたらまずは上の画像にもあるように、にある New File ボタンをクリックしてR Scriptを作成する。基本的に分析の際は、R Scriptにコードを書いていくことになる。

R Scriptを開くと下の画像のような状態となり、それぞれの部分がそれぞれの役割を有している。

R Studioでの基本的な配置画面と各部分の機能

基本的な流れとしては

  1. R Scriptを作成し、画面左上の部分でコードを打ち込んで実行する(実行はの右上にあるRunSourceボタン)1
  1. 実行された結果は画面左下の□部分(Console)、図表などは画面右の下側(Plots, Viewer, etc.)に表示される

  2. 適宜R Scriptを内の保存ボタンで保存する

  3. 1度閉じたR Scriptはの開くボタンで呼び出す

2.2 基本的に用いる表現・数式

以下からは、実際にR Script内にコードを書いて実行していく。薄い灰色で覆われている部分がRコードであり、そのすぐ下側の部分はコードが実行されて返された結果である。

2.2.1 コメント

# #マークの後に記入される内容は、コードに一切影響を与えない
# 他者が見ても理解できるように、#でコードの説明・何をしているのかを適宜残しておくと良い

2.2.2 四則演算

5 + 3    # 足し算
[1] 8
100 - 33 # 引き算
[1] 67
33 * 9   # かけ算
[1] 297
22 / 11  # 割り算
[1] 2

2.2.3 文字列の操作

R上で文字列を操作する場合、必ず""''で囲む必要がある。

"相澤ゼミ" # ただ文字列を書いて実行すると、その文字列がConsoleに返される 
[1] "相澤ゼミ"
相澤ゼミ   # 囲まずに実行するとエラーが表示される
Error: object '相澤ゼミ' not found

2.2.4 ベクトル

Rでは4'こんにちは'等の1つのデータのみならず、複数のデータが繋がったベクトル(例:(3, 4), ("こんにちは", "さようなら") は2つのデータが繋がったベクトル)を用いた操作が可能である。2

ベクトルを用いる際は各データを,でつなぎ、全体をc()で囲む。

c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
 [1]  1  2  3  4  5  6  7  8  9 10
c("成田", "岩川", "小田", "田代", "大沼", "渋谷", "諫山", "西田")
[1] "成田" "岩川" "小田" "田代" "大沼" "渋谷" "諫山" "西田"
# 2つのベクトルを用いた演算も可能(同じ順番の要素同士が計算される)
c(1, 1, 1) + c(2, 3, 4)
[1] 3 4 5

2.2.5 代入

Rの作業で特定のデータを何回も用いる際、いちいちコードを打つのは面倒くさい。そこで、そのようなデータを何らかの文字 (xa)に代入することで、作業を素早く、簡単に進めることが出来る。

代入は基本的に何らかの文字(object) <- 代入したいデータで実行され、代入されたデータは画面右上のEnviromentという空間で確認することが出来る。

x <- 5  # xに5を代入した
x + x   # 5 + 5が出力される
[1] 10
# 色々なものを代入できる
相澤ゼミ1期生 <- c("成田", "岩川", "小田", "田代", "大沼", "渋谷", "諫山", "西田")
相澤ゼミ1期生
[1] "成田" "岩川" "小田" "田代" "大沼" "渋谷" "諫山" "西田"

2.2.6 関数

統計ソフトを用いる目的は手計算では困難な操作をコンピュータに行なってもらうことであり、それらを実行するために用いるのが関数である。以下で元からRに内蔵されている関数を軽く紹介する。

# sum(): ベクトル内の値を合計する
sum(c(1, 2, 3, 4))
[1] 10
# paste0(): 各データを繋げた1つの文字列を作成する
paste0("相澤ゼミは", "北海道大学経済学部の", "ゼミです。")
[1] "相澤ゼミは北海道大学経済学部のゼミです。"
# length(): ベクトルの長さを測る
length(c("pen", "pineapple", "apple", "pen"))
[1] 4

上記の様なR内蔵の関数を使う場面は少なくないものの、全てがそうである訳ではなく、多くの場合パッケージというものを読み込み、その中に含まれている関数を用いる。パッケージの詳細は次節パッケージを参照。

2.2.7 データ型:numeric(数値)とcharacter(文字列)

コードで操作されるデータにはそれぞれデータ型と言うものが存在する。 Rに内蔵されるclass()という関数を使うと、そのデータ型が何かを知ることが出来る。

class(1234)       # 1234というデータの型を確認
[1] "numeric"
class("相澤ゼミ") # "相澤ゼミ"というデータの型を確認
[1] "character"

12343.14などの様な数値はnumeric型(数値型)に分類され、"こんにちは""hello world"の様な文字列はcharacter型(文字列型)と呼ばれる。データ型は上記の2つだけではなく、非常に様々な種類(data.frame, matrix, logical, factor, etc.)が存在するため、教科書やWeb資料を適宜確認することを強く薦める。3

一見重要ではなさそうなデータ型だが、筆者自身が卒論で最も苦しんだのは、このデータ型を原因とするエラーであった。以下は簡単な誤りの例だが、sum()の中にcharacter型を含めることは出来ないため、エラーが表示されている。

sum(2700, "2700")
Error in sum(2700, "2700"): invalid 'type' (character) of argument

numeric型の2700とcharacter型の"2700"は、コンピュータ内では完全に別物として扱われ、上記のsum()のように特定のデータ型しか受け付けない関数が多く存在する。しかしながら、私たちが分析において数千~数万という規模のデータを見た際に、どの値がどのデータ型かを視覚的に見分けるのは難しい。分析を行なう際は、このようなデータ型の違い・ズレに注意してコードを書き進めていかなければならない。

3 パッケージ

Rで分析やデータの編集を行なう際、パッケージというものが必要不可欠。パッケージとは、R上で実行出来る関数やデータの集まりである。

私たちが何か料理(目的となる分析)を行なう際、様々な調理器具(関数)や具材(データ)を用いることになるが、パッケージはいわば調理器具セット or 具材セットに例えられ、そのセットの中から目的に合った調理器具・具材を利用する。

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

パッケージのインストールは、いわばお店でそれらのセットを購入することを意味する。試しに{purrr}という名前のパッケージをインストールする。 Rに内蔵されているinstall.packages("パッケージ名")という関数を使う。

install.packages("purrr")

本資料では結果が表示されていないが、皆さんが実行した際は、以下の様な文言が出ていれば無事にインストールされている。

パッケージ ‘purrr’ は無事に展開され、MD5 サムもチェックされました

ダウンロードされたパッケージは、以下にあります

C:\Users\~(人によって異なるファイルのパス名)

一度インストールしたパッケージは、PCのファイル内に保存されるため、次回起動時にインストールする必要はない4

3.2 パッケージの読み込み

パッケージのインストールと読み込みは異なる操作である。

あなたは調理器具セット・具材セットを購入(インストール)したが、調理器具は棚へ、具材は冷蔵庫にしまうはずだ。そして、いざ調理(分析)に用いる際にそこから取り出して使用しなければならない。パッケージの読み込みは、この取り出しに相当する。

先ほどの{purrr}というパッケージを今度は読み込んでみる。使う関数はlibrary(パッケージ名)またはrequire(パッケージ名)

library(purrr)
Warning: package 'purrr' was built under R version 4.5.2

何やらWarningが出力されているが無視してOK。RにおいてWarningが表示されたとき、コード自体は実行されており、一応の注意点・説明をRのソフトが教えてくれている状態である。5 ただしErrorが表示された場合、コードが正しく実行されていないため、何らかの修正が必要である。

一度読み込んだパッケージはRのソフトが終了すると、自動的に棚・冷蔵庫に戻ってしまう。そのため、分析者はRを起動するたびにlibrary(),require()でパッケージを呼び出さなければならない

上記の内容では、あるパッケージに含まれる関数・データを用いる際に、以下の手順が必要であることを説明した。

  1. install.packages()でパッケージをインストール
  2. library()またはrequire()でパッケージの読み込み

しかし、手順の2番目である「パッケージの読み込み」を行なわなくても、該当の関数・データを利用できる方法がある。それは、それらのコードの前にパッケージ名::を付けることだ。

以下は、先ほど読み込んだ{purrr}というパッケージにあるmap_dbl()という関数を利用する例だ。library(purrr)で事前にパッケージを読み込まなくとも、purrr::と書けば{purrr}に含まれる関数を利用できる。

# c(1, 2, 3)ベクトルの各要素に5を足す
purrr::map_dbl(c(1,2,3), `+`, 5)
[1] 6 7 8

この利用方法のメリットは該当の関数・データがどのパッケージに属するか一目で分かることだ。パッケージは世界中のR利用者が製作可能であるため、異なる2つのパッケージに同じ名前の関数・データが含まれることが時々ある。6 こういった状況下で、分析者が用いるものがどのパッケージに属するものかを明記することは、他の研究者がコードを読む際の誤解を防ぐ利点がある。

しかしながら、毎度関数を利用する際にパッケージ名::を書くのは煩わしいため、普段はlibrary()require()でパッケージを読み込んで利用する方が良いと思う。7

脚注

  1. Runはスクリプト内で指定した部分を実行し、Sourceはスクリプト内の全てのコードを実行する。また、Runはキーボードの Ctrl + Enter でも可能。↩︎

  2. 1つのデータ自体も長さが1のベクトルである。↩︎

  3. Web資料としては「私たちのR 9 データ型」が良いと思う。↩︎

  4. パッケージは時々新しい関数の追加・既存の関数の変更が行なわれるため、その際は必要に応じて再度install.packages()を行なってアップデートすれば良い。↩︎

  5. 別の関数を使用する際に出力されるWarningは少し気にしとくと良い。↩︎

  6. {dplyr}パッケージのfilter()と{stats}パッケージのfilter()など↩︎

  7. 関数名のかぶり自体が稀で、課題レポートや卒論において問題になることはほとんどないと思われる。↩︎