行列 (Matrix) の作り方。
行列 (Matrix) とは
matrix は線形代数の行列と同じように、2次元配列に値を格納する。
データ型とデータ構造の覚え書き。 データ型 データ構造を調べたり変換したりする場合は、下記関数が用意されている。 データ型には以下の関数が用意されている。 データ型 データ型を調べる データ型を変換する モード mode …
Matrix を作る
行を指定する場合
matrix を作る時は、行列に再構成する vector を渡し、さらに nrow 引数に数値を渡して行列の行数を定義する。
すると matrix は指定された行数の行列になるように vector を再構成する。
行数を2行に指定する場合は、
nrow =
で指定する。
m <- matrix(c(1:6), nrow = 2)
m
output
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
列を指定する場合
列数を2行に指定する場合は、
ncol =
で指定する。
m <- matrix(c(1:6), ncol= 2)
m
output
## [,1] [,2]
## [1,] 1 4
## [2,] 2 5
## [3,] 3 6
行毎に値を並べる
matrix はデフォルトでは列ごとに値を並べて行くが、
byrow = TRUE
引数を指定すると、行毎に値を並べる事ができる。
m <- matrix(c(1:6), ncol= 2, byrow = TRUE)
m
output
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
matrix 同士をつなげる
2つの matrix の、行数か列数のどちらかが同じであれば、結合することができる。
行数が同じ matrix
m1 <- matrix(c(1:6), nrow=3)
m1
output
## [,1] [,2]
## [1,] 1 4
## [2,] 2 5
## [3,] 3 6
m2 <- matrix(c(101:112), nrow=3)
m2
output
## [,1] [,2] [,3] [,4]
## [1,] 101 104 107 110
## [2,] 102 105 108 111
## [3,] 103 106 109 112
m3 <- cbind(m1,m2)
m3
output
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 1 4 101 104 107 110
## [2,] 2 5 102 105 108 111
## [3,] 3 6 103 106 109 112
列数が同じ matrix
m1 <- matrix(c(1:6), rcol=3)
m1
output
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
m2 <- matrix(c(101:112), rcol=3)
m2
output
## [,1] [,2] [,3]
## [1,] 101 105 109
## [2,] 102 106 110
## [3,] 103 107 111
## [4,] 104 108 112
m3 <- cbind(m1,m2)
m3
output
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
## [3,] 101 105 109
## [4,] 102 106 110
## [5,] 103 107 111
## [6,] 104 108 112
Matrix の行名と列名をつける
Matrixに行名をつける時は
rownames()
、列名をつける時は
rownames()
を使用する。
m <- matrix(1:6, ncol=2)
rownames(m) <- c("alpha", "beta", "gamma")
colnames(m) <- c("Apple", "Banana")
m
output
Apple Banana
alpha 1 4
beta 2 5
gamma 3 6
Matrix の各要素へのアクセス
Matrix の特定の要素の取り出し方は下記参照。
Vector、Matrix、DataFrame、List etc. から [] (square brackets) を使って特定の要素へアクセスする方法。 ベクトル (Vector) の場合 Vectorを作る。 v & …
Matrix で計算
Matrix同士の計算
matrix 同士の要素数が同じなら、各要素間で加減乗除 etc. の計算が可能。
m1 <- matrix(c(1:6), ncol=3)
m1
m2 <- matrix(c(101:106), ncol=3)
m2
m3 <- m1 + m2
m3
output
> m1 <- matrix(c(1:6), ncol=3)
> m1
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
> m2 <- matrix(c(101:106), ncol=3)
> m2
## [,1] [,2] [,3]
## [1,] 101 103 105
## [2,] 102 104 106
> m3 <- m1 + m2
> m3
## [,1] [,2] [,3]
## [1,] 102 106 110
## [2,] 104 108 112
> m4 <- m1 - m2
> m4
## [,1] [,2] [,3]
## [1,] -100 -100 -100
## [2,] -100 -100 -100
> m5 <- m1 * m2
> m5
## [,1] [,2] [,3]
## [1,] 101 309 525
## [2,] 204 416 636
> m6 <- m1 / m2
> m6
## [,1] [,2] [,3]
## [1,] 0.00990099 0.02912621 0.04761905
## [2,] 0.01960784 0.03846154 0.05660377
Matrix 内での計算
1つの matrix 内での各要素同士の計算
- 行の合計
- 行の平均
- 列の合計
- 列の平均
# 行の合計
m1 <- rowSums(m)
m1
# 行の平均
m2 <- rowMeans(m)
m2
# 列の合計
m3 <- colSums(m)
m3
# 列の平均
m4 <- colMeans(m)
m4
output
> # 行の合計
> m1 <- rowSums(m)> m1
[1] 22 26 30
> # 行の平均
> m2 <- rowMeans(m)> m2
[1] 5.5 6.5 7.5
> # 列の合計
> m3 <- colSums(m)> m3
[1] 6 15 24 33
> # 列の平均
> m4 <- colMeans(m)> m4
[1] 2 5 8 11
References
Rのmatrix入門 matrixをつくる データからmatrixを作る matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) ...