1.3 データ構造(2)配列と行列
ベクトルに次元属性を与えることにより、配列として扱えるようになります。
x <- 1:9
x## [1] 1 2 3 4 5 6 7 8 9
# xを3x3の2次元配列(行列)として扱う
dim(x) <- c(3, 3)
attributes(x)## $dim
## [1] 3 3
x## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
x3 <- 1:27
# x3を3x3x3の3次元配列として扱う
dim(x3) <- c(3, 3, 3)
x3## , , 1
##
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] 10 13 16
## [2,] 11 14 17
## [3,] 12 15 18
##
## , , 3
##
## [,1] [,2] [,3]
## [1,] 19 22 25
## [2,] 20 23 26
## [3,] 21 24 27
dim()関数により次元属性が与えられ、引数には各次元の要素数を指定します。配列の各要素は、各次元の要素番号を指定しても、ベクトルとしての要素番号を指定しても参照できます。
x3[1, 2, 1]## [1] 4
x3[4]## [1] 4
特に2次元配列である行列を作成する場合には、matrix()関数を使うことができます。
matrix(1:15, ncol = 5, byrow = TRUE)## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 2 3 4 5
## [2,] 6 7 8 9 10
## [3,] 11 12 13 14 15
最初の引数でベクトルを指定しますncolは行列の列数、byrowは行方向にベクトルの要素を並べるかどうかをTRUEかFALSEで指定します(デフォルトはFALSE)。