Rで行列とベクトルの積

Rで行列とベクトルの積を計算しようと思ったら期待通りにならなかったのでメモ。
知らなかったーw。

◎やりたいこと

1行2列のベクトルを、2行2列の行列に左から掛けた結果を得たい。そして、最後にその結果に1行2列の転置ベクトルを掛けてスカラー値を得たい。

◎やり方
結論から述べると次のようにする。
内積演算子は「%*%」であることがポイント。

# 2 factor exp
factor.exp <- matrix(c(0.5, 0.75), nrow=1, ncol=2, byrow=T)
factor.cov.matrix<-matrix(c(0.625,0.0225,0.0225,0.1024), nrow=2, ncol=2,byrow=T)
stock.a.return<-(factor.exp%*%factor.cov.matrix)%*%t(factor.exp)

上記やり方では、ベクトルc(0.5, 0.75)をmatrixで行列に変換してから実行している。
ベクトルのままやるには次のようにする。

factor.cov.matrix<-matrix(c(0.625,0.0225,0.0225,0.1024), nrow=2, ncol=2,byrow=T)
stock.a.return<-(c(0.5, 0.75)%*%factor.cov.matrix)%*%t(t(c(0.5, 0.75)))

ベクトルをt演算子を使用して一度行列にしてから、更にt演算子を使用することで転置する箇所がポイント。