トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

行列

*disclaimer
55342

R

行列


 行列の作成 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