R言語のデータ構造について解説します。
ここでは、データ構造にはどのようなものがあり、どのような特徴があるのかに焦点を絞ってお伝えします。そのため、各データ構造の作り方などは深く言及しておりません。

主なデータ構造一覧

R言語の主なデータ構造の一覧は次になります。

データ構造 名称 説明
Vector ベクトル 同じデータ型の要素を持つ1次元配列
Matrix 行列 同じデータ型の要素を持つ2次元配列
Array アレイ 同じデータ型の要素を持つ多次元配列
Data Frame データフレーム 各列のデータ型が異なっても良い2次元配列
List リスト 様々なデータ型、データ構造を格納できる連想配列
Factor 因子 名義尺度を表すことのできる1次元配列
Ordered Factor 順序付き因子 順序尺度を表すことのできる1次元配列

Vector

Vector(ベクトル)は同じデータ型の要素を持つ1次元配列のことです。1次元配列とは、要素が一つだけ入る箱を一列に並べたものとしてイメージしてください。例えば、箱[]が3つあり[][][]、この中に要素1、2、3がこの順で箱の中に入っているとき、[1][2][3]となります。
高校数学で学ぶことのベクトルと近いですが、数値に限らず同じデータ型の要素であれば良い点に注意してください。もし、数値と文字列を混ぜた場合は文字列のベクトルになります。
Vectorを作りたいときには、c()を用います。次のコードはVectorの使い方の一例です。


c(1, 2, 3)
(out)1 2 3
c("これは", "文字列のベクトル", "です")
(out)"これは" "文字列のベクトル" "です"
c(1, "これは文字列のベクトルになります", 3)
(out)"1" "これは文字列のベクトルになります" "3"

Matrix

Matrix(行列)は同じデータ型の要素を持つ2次元配列のことです。2次元配列とは、要素が一つだけ入る箱を縦横に並べたものとしてイメージしてください。具体的にはエクセルのシートが2次元配列そのものです。
高校数学で学ぶことの行列と近いですが、数値に限らず同じデータ型の要素であれば良い点に注意してください。もし、数値と文字列を混ぜた場合は文字列の行列になります。
Matrixを作りたいときには、matrix()を用います。しかし、matrix()を用いてMatrixデータ構造を作成することは非常に稀です。そのため、Matrixというデータ構造があることは認識しておくことは重要ですが、作り方は覚える必要はありません。一応、matrix()の使い方の一例を次に載せます。


matrix(c(1, 2, 3, 4), nrow = 2)
(out)     [,1] [,2]
(out)[1,]    1    3
(out)[2,]    2    4
matrix(c("これは", "行列", "文字列の", "です"), nrow = 2)
(out)     [,1]     [,2]      
(out)[1,] "これは" "文字列の"
(out)[2,] "行列"   "です"  

Array

Array(アレイ)は同じデータ型の要素を持つ多次元配列のことです。多次元配列のイメージをお伝えすることは難しいのですが、3次元の場合だと倉庫に箱がいっぱい入っているようなイメージです。
ArrayもVectorやMatrixと同様に、数値に限らず同じデータ型の要素であれば良い点に注意してください。もし、数値と文字列を混ぜた場合は文字列のアレイになります。
Arrayを作りたいときには、array()を用います。しかし、array()を用いてArrayデータ構造を作成することは非常に稀です。そのため、Arrayというデータ構造があることは認識しておくことは重要ですが、作り方は覚える必要はありません。一応、array()の使い方の一例を次に載せます。


array(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), c(2, 2, 3))
(out), , 1
(out)
(out)     [,1] [,2]
(out)[1,]    1    3
(out)[2,]    2    4
(out)
(out), , 2
(out)
(out)     [,1] [,2]
(out)[1,]    5    7
(out)[2,]    6    8
(out)
(out), , 3
(out)
(out)     [,1] [,2]
(out)[1,]    9   11
(out)[2,]   10   12

Data Frame

Data Frame(データフレーム)は各列のデータ型が異なっても良い2次元配列のことです。データ分析においては、このData Frameが主役になります。例えば、ある列は実数値のVectorであったり、またある列はFactorであったり、ときにはある列がData Frameの要素を持つListであることもあります。
Data Frameを作りたいときには、data.frame()を用います。しかし、data.frame()を用いてData Frameデータ構造を作成することは非常に稀です。実際には、CSVファイルやExcelファイルのシートをData Frameとして読み込む、といった使い方をします。
一応、data.frame()の使い方の一例を次に載せます。


data.frame(x = c(1, 2, 3), y = c("a", "b", "c"))
(out)  x y
(out)1 1 a
(out)2 2 b
(out)3 3 c

List

List(リスト)は様々なデータ型、データ構造を格納できる連想配列のことです。連想配列とは、辞書とも呼ばれ、キーと値がペアになったものの集まりのことです。具体的には、連想配列Xに2つのペア(鍵A, 値a)と(鍵B, 値b)が格納されているとき、この連想配列Xに鍵Aを入れれば、値aが取り出せます。
Listを作りたいときには、list()を用います。次のコードはlist()の使い方の一例です。


list(x1 = "First", x2 = 123, vector = c(1, 2, 3, 4))
(out)$x1
(out)[1] "First"
(out)
(out)$x2
(out)[1] 123
(out)
(out)$vector
(out)[1] 1 2 3 4

Factor

Factor(因子)は名義尺度を表すことのできる1次元配列のことです。名義尺度とは、例えば血液型のA型、B型、O型、AB型のように順序を持たない水準のことです。
Factorを作りたいときには、R言語に標準的に搭載されているfactor()を用いる方法があります。
しかし、実際にはtidyverseパッケージにも含まれているforcatsパッケージの「fct_」から始まる関数を用いることの方が多いです。
ここでは、R言語に標準的に搭載されているfactor()の一例を次に載せます。


factor(c("A型", "B型", "O型", "AB型", "A型", "B型"))
(out)[1] A型  B型  O型  AB型 A型  B型 
(out)Levels: AB型 A型 B型 O型

Ordered Factor

Ordered Factor(順序付き因子)は順序尺度を表すことのできる1次元配列のことです。順序尺度とは、例えばランキングの1位、2位、3位のように順序を持つ水準のことです。
Ordered Factorを作りたいときには、ordered()を用います。次のコードはordered()の使い方の一例です。Levelsに注目すると、Factorとは異なり大小記号があることに注意してください。


ordered(c("1位", "2位", "3位"))
(out)[1] 1位 2位 3位
(out)Levels: 1位 < 2位 < 3位
R入門 データ構造