ここでは、データ構造にはどのようなものがあり、どのような特徴があるのかに焦点を絞ってお伝えします。そのため、各データ構造の作り方などは深く言及しておりません。
主なデータ構造一覧
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位