Rでベクトルの内積を計算する方法
コード
x<-1:10; x
y<-(-1)^(1:10); y
sum(x*y)
x %*% y
x %o% y
Rで分析やシミュレーションをするとき、重み付けされた期待値を計算することがよくある。もちろん数式的に$\displaystyle \left< \mathbf{x}, \mathbf{y} \right> = \sum_{i=1}^{n} x_{i} y_{i}$はとても簡単で、R自体のベクター計算がとても便利なため、sum()
関数さえあれば簡単に内積を計算できる。しかし、これは長い目で見るとコードの可読性を下げる要因になる。
一方で、$n$次元ベクトルは$1 \times n$次元行列とみなすことができる。これを利用すれば行列の乗算を使って簡単にベクトルの内積を計算できる。これは驚くべき事実でも何でもなく、単なる思い出しに過ぎない。
また、二項演算 %o%
は二つのベクトルの外積を返すというヒントもある。