matrix関数を使う。以下のように引数を指定する
matrix(成分を含むベクトル, 行数, 列数)
行数と列数はnrowオプションとncolオプションで明示的に指定することができる。また、指定したベクトルの要素数に応じて、行または列数だけの指定でもう一方が決まる場合は、指定を省略できる。
> matrix(1:6, 2, 3)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> matrix(1:6, nrow = 2, ncol = 3)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> matrix(1:6, ncol = 3, nrow = 2)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> matrix(1:6, nrow = 3, ncol = 2)
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
> matrix(1:6, ncol = 2)
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
指定したベクトルの要素数と行数や列数が揃わない場合は、エラーが発生する。
> matrix(1:8, nrow = 2, ncol = 2)
[,1] [,2]
[1,] 1 3
[2,] 2 4
警告メッセージ:
matrix(1:8, nrow = 2, ncol = 2) で:
data length differs from size of matrix: [8 != 2 x 2]
> matrix(1:8, nrow = 3)
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 1
警告メッセージ:
matrix(1:8, nrow = 3) で:
data length [8] is not a sub-multiple or multiple of the number of rows [3]
matrix関数は指定したベクトルの要素を、行列の一列目の成分から順番に埋めようとする。これを一行目の成分から埋めるようにするには、byrowオプションにTRUEを指定する。
> matrix(1:6, nrow = 2, ncol = 3)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> matrix(1:6, nrow = 2, ncol = 3, byrow = TRUE)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6