R 에서 벡터끼리 내적 계산하는 법

R 에서 벡터끼리 내적 계산하는 법

코드

x<-1:10; x
y<-(-1)^(1:10); y
 
sum(x*y)
 
x %*% y
x %o% y

R 에서 분석 혹은 시뮬레이션을 하다보면 가중치가 적용된 기댓값을 구할 일이 종종 있다. 물론 수식적으로 $\displaystyle \left< \mathbb{x}, \mathbb{y} \right> = \sum_{i=1}^{n} x_{i} y_{i}$ 는 아주 간단하고 R 자체의 벡터 계산이 아주 편리하기 때문에 sum() 함수만 있다면 쉽게 내적을 할 수 있다. 그러나 이는 길게 보았을 때 코드의 가독성을 떨어뜨리는 요인이 된다.

한편 $n$ 차원 벡터는 $1 \times n$ 차원 행렬로 볼 수 있다. 이를 이용하면 행렬의 곱을 이용해 간단하게 벡터의 내적을 계산할 수 있다. 이는 놀라운 사실도 무엇도 아닌 단순한 환기에 불과하다.

20190515\_104637.png 또 하나의 팁으로, 이항연산 %o% 은 두 벡터의 외적을 반환한다.

댓글