R logo

行列 (Matrix) の作り方。

行列 (Matrix) とは

matrix は線形代数の行列と同じように、2次元配列に値を格納する。

Matrix

 

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 の特定の要素の取り出し方は下記参照。

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

にほんブログ村 子育てブログ ワーキングマザー育児へ