*disclaimer
603035
行列
行列の基本
- 同じ型のデータの2次元配置
- matrix関数で作成
- 行の数は、nrow=行数 で指定
- 列の数は、ncol=列数 で指定
- 最初は、すべての要素の値を0にして作成しておくと楽。
> test.mx <- matrix(0, nrow=5, ncol=7) > test.mx [,1] [,2] [,3] [,4] [,5] [,6] [,7] [1,] 0 0 0 0 0 0 0 [2,] 0 0 0 0 0 0 0 [3,] 0 0 0 0 0 0 0 [4,] 0 0 0 0 0 0 0 [5,] 0 0 0 0 0 0 0
> test.mx <- matrix(1:35, nrow=5, ncol=7) > test.mx [,1] [,2] [,3] [,4] [,5] [,6] [,7] [1,] 1 6 11 16 21 26 31 [2,] 2 7 12 17 22 27 32 [3,] 3 8 13 18 23 28 33 [4,] 4 9 14 19 24 29 34 [5,] 5 10 15 20 25 30 35
- データの数が合わないとエラーになる。
- 先に作っておいたベクトルデータを入れることも可能。
> test koku suu ei sekaisi rinri buturi kagaku 79 85 87 78 89 68 59 > test.mx[1,] <- test > test.mx [,1] [,2] [,3] [,4] [,5] [,6] [,7] [1,] 79 85 87 78 89 68 59 [2,] 2 7 12 17 22 27 32 [3,] 3 8 13 18 23 28 33 [4,] 4 9 14 19 24 29 34 [5,] 5 10 15 20 25 30 35
- カラムの見出しに名前を付ける
> colnames(test.mx) <- c("koku", "suu", "ei", "sekaisi", "rinri", "buturi", "kagaku") > test.mx koku suu ei sekaisi rinri buturi kagaku [1,] 79 85 87 78 89 68 59 [2,] 2 7 12 17 22 27 32 [3,] 3 8 13 18 23 28 33 [4,] 4 9 14 19 24 29 34 [5,] 5 10 15 20 25 30 35
- 各行の見出しに名前を付ける
> rownames(test.mx) <- c("1mid", "1fin", "2mid", "2fin", "3fin") > test.mx koku suu ei sekaisi rinri buturi kagaku 1mid 79 85 87 78 89 68 59 1fin 2 7 12 17 22 27 32 2mid 3 8 13 18 23 28 33 2fin 4 9 14 19 24 29 34 3fin 5 10 15 20 25 30 35
- 行列で、名前を指定して、値を出す。
> test.mx["2fin", "rinri"] [1] 24
行列の作成 matrix()
matrix(データ, nrow=行数, ncol=列数)
> matrix(1:6, nrow=2, ncol=3) [,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
見出しをつける colnames(), rownames()
colnames(data) <- c("koku", "suu", "eigo")
要素の指定 [行番号, 列番号]
> mx <- matrix(1:6, nrow=3, ncol=2) > mx [,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6 > mx[3, 1] [1] 3 > mx[2, 2] [1] 5
- 行列のいずれかを省略すると、すべてを指定したことになる。
> mx [,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6 > mx[1, ] [1] 1 4 > mx[ , 2] [1] 4 5 6
行列の演算
> mx1 <- matrix(1:4, nrow=2, ncol=2) > mx2 <- matrix(5:8, nrow=2, ncol=2) > mx1 [,1] [,2] [1,] 1 3 [2,] 2 4 > mx2 [,1] [,2] [1,] 5 7 [2,] 6 8 > mx1 + mx2 [,1] [,2] [1,] 6 10 [2,] 8 12 > mx2 - mx1 [,1] [,2] [1,] 4 4 [2,] 4 4 > mx1 * mx2 [,1] [,2] [1,] 5 21 [2,] 12 32 > mx1 %*% mx2 [,1] [,2] [1,] 23 31 [2,] 34 46
- 積に注意
行列の計算
rowSums() 各行の総和 colSums() 各列の総和
rowMeans() colMeans()
> rowSums(mx1) [1] 4 6 > colSums(mx1) [1] 3 7 > rowMeans(mx1) [1] 2 3 > colMeans(mx1) [1] 1.5 3.5
行列の結合 rbind(), cbind()
> rbind(mx1, mx2) [,1] [,2] [1,] 1 3 [2,] 2 4 [3,] 5 7 [4,] 6 8 > cbind(mx1, mx2) [,1] [,2] [,3] [,4] [1,] 1 3 5 7 [2,] 2 4 6 8
https://sugiura-ken.org/wiki/