R言語 行列 - R Matrices

 

参考:

  • 行列に関するる Tips 大全 1

和訳:

  • matrix: 行列
  • row: 行
  • column: 列

行列

m1 <- matrix(1:10, nrow = 2)
m1
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    3    5    7    9
## [2,]    2    4    6    8   10

チェック

length(m1)  #行列の要素の数を調べる
## [1] 10
nrow(m1)  #行
## [1] 2
ncol(m1)  #列
## [1] 5
dim(m1)  #nxm
## [1] 2 5
m2 <- matrix(1:10, nrow = 2, byrow = TRUE)
m2
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    2    3    4    5
## [2,]    6    7    8    9   10
m3 <- matrix(1:12, nrow = 3, ncol = 4, byrow = TRUE)
m3
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
m4 <- matrix(c(1, 0, 0, 1), nrow = 2, ncol = 2, byrow = TRUE)
m4
##      [,1] [,2]
## [1,]    1    0
## [2,]    0    1

索引: オブジェクト名[row,column]

m3
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
m3[2, 3]
## [1] 7
m3[3, ]
## [1]  9 10 11 12
m3[, 3]
## [1]  3  7 11
m3[2:3, ]
##      [,1] [,2] [,3] [,4]
## [1,]    5    6    7    8
## [2,]    9   10   11   12
m3[, 2:3]
##      [,1] [,2]
## [1,]    2    3
## [2,]    6    7
## [3,]   10   11
m3[, c(2, 4)]
##      [,1] [,2]
## [1,]    2    4
## [2,]    6    8
## [3,]   10   12
m3[c(1, 2), c(3, 4)]
##      [,1] [,2]
## [1,]    3    4
## [2,]    7    8

値を上書き

m3
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
m3[3, 4] <- 0
m3
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11    0

名称を付ける

m5 <- matrix(1:4, nrow = 2, ncol = 2, byrow = TRUE)
m5
##      [,1] [,2]
## [1,]    1    2
## [2,]    3    4
rownames(m5) <- c("1st", "2nd")
colnames(m5) <- c("first", "second")
m5
##     first second
## 1st     1      2
## 2nd     3      4
rownames(m5) <- letters[1:2]  #a,b,c,...
colnames(m5) <- LETTERS[1:2]  #A,B,C,...
m5
##   A B
## a 1 2
## b 3 4

演算 pt1

m5 + 2
##   A B
## a 3 4
## b 5 6
m5 - 2
##    A B
## a -1 0
## b  1 2
m5/2
##     A B
## a 0.5 1
## b 1.5 2
m5 * 2
##   A B
## a 2 4
## b 6 8

演算 pt2

m6 <- matrix(c(2, 3, 4, 5), nrow = 2, ncol = 2)
m5
##   A B
## a 1 2
## b 3 4
m6
##      [,1] [,2]
## [1,]    2    4
## [2,]    3    5
m5 + m6
##   A B
## a 3 6
## b 6 9
m5 - m6
##    A  B
## a -1 -2
## b  0 -1
m5/m6
##     A   B
## a 0.5 0.5
## b 1.0 0.8
m5 * m6  #行列の各要素の積
##   A  B
## a 2  8
## b 9 20
m5 %*% m6  #行列の積
##   [,1] [,2]
## a    8   14
## b   18   32

転置行列: 行と列の入れ替え

m6
##      [,1] [,2]
## [1,]    2    4
## [2,]    3    5
m7 <- t(m6)
m7
##      [,1] [,2]
## [1,]    2    3
## [2,]    4    5

対角行列

m8 <- diag(nrow = 2, ncol = 2)
m8
##      [,1] [,2]
## [1,]    1    0
## [2,]    0    1
m9 <- diag(c(4, 3, 2, 1), nrow = 4, ncol = 4)
m9
##      [,1] [,2] [,3] [,4]
## [1,]    4    0    0    0
## [2,]    0    3    0    0
## [3,]    0    0    2    0
## [4,]    0    0    0    1

逆行列

m6
##      [,1] [,2]
## [1,]    2    4
## [2,]    3    5
solve(m6)
##      [,1] [,2]
## [1,] -2.5    2
## [2,]  1.5   -1
m6 %*% solve(m6)  #単位行列
##      [,1]         [,2]
## [1,]    1 4.440892e-16
## [2,]    0 1.000000e+00

行列式

det(m6)
## [1] -2