R言語(行列)

ベクトル、配列の次は、行列です。行列の生成にはmatrixを使います。

> a = matrix(1:12, nrow=3, ncol=4)
> a
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
>

行列の掛け算をします。
\[
a = \left(
\begin{array}{cc}
1 & 2 &3
\end{array}
\right)
\]
\[
b = \left(
\begin{array}{cc}
4 \\
5 \\
6
\end{array}
\right)
\]
\[
a \times b =
\]
行列の積をするには、%”%を使います。

> a=matrix(1:3,nrow=1,ncol=3)
> a
     [,1] [,2] [,3]
[1,]    1    2    3
> b=matrix(4:6,nrow=3,ncol=1)
> b
     [,1]
[1,]    4
[2,]    5
[3,]    6
> a %*% b
     [,1]
[1,]   32

計算できない行列にすると、このようにエラーがでます。

> b=matrix(4:5,nrow=2,ncol=1)
> b
     [,1]
[1,]    4
[2,]    5
> a %*% b
 a %*% b でエラー:  適切な引数ではありません
>

スカラーとの積は、普通に*を使います。

> a
     [,1] [,2] [,3]
[1,]    1    2    3
> a * 3
     [,1] [,2] [,3]
[1,]    3    6    9
>

別の行列でも確認してみましょう。
\[
a = \left(
\begin{array}{cc}
1 & 3 & 5\\
2 & 4 & 6
\end{array}
\right)
\]
\[
b = \left(
\begin{array}{cc}
10 \\
20 \\
30
\end{array}
\right)
\]

> a = matrix(1:6,nrow=2,ncol=3)
> b = matrix(c(10,20,30), nrow=3,ncol=1)
> a
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> b
     [,1]
[1,]   10
[2,]   20
[3,]   30
> a %*% b
     [,1]
[1,]  220
[2,]  280
>

各要素ごとの計算は、四則演算の記号がそのまま使えます。

> a = matrix (1:4, nrow=2,ncol=2)
> b = matrix (11:14, nrow=2,ncol=2)
> a
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> b
     [,1] [,2]
[1,]   11   13
[2,]   12   14

各要素の和。

> a + b
     [,1] [,2]
[1,]   12   16
[2,]   14   18

各要素の積

> a * b
     [,1] [,2]
[1,]   11   39
[2,]   24   56

コメント

タイトルとURLをコピーしました