1.3 データ構造(2)配列と行列
ベクトルに次元属性を与えることにより、配列として扱えるようになります。
<- 1:9
x 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
<- 1:27
x3 # 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()
関数により次元属性が与えられ、引数には各次元の要素数を指定します。配列の各要素は、各次元の要素番号を指定しても、ベクトルとしての要素番号を指定しても参照できます。
1, 2, 1] x3[
## [1] 4
4] x3[
## [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
)。