2013-03-25 51 views
1

R - 當矢量在兩個矩陣中時,如何矢量化外部產品之和的計算 - XYR - 當矢量在兩個矩陣中時,如何矢量化外積和的計算?

例子:

X = cbind(1:3, 2:4) 
Y = cbind(0:2, c(0,0,1)) 
> X 
    [,1] [,2] 
[1,] 1 2 
[2,] 2 3 
[3,] 3 4 
> Y 
    [,1] [,2] 
[1,] 0 0 
[2,] 1 0 
[3,] 2 1 

> outer(X[1,],Y[1,]) + outer(X[2,],Y[2,]) + outer(X[3,],Y[3,]) 
    [,1] [,2] 
[1,] 8 3 
[2,] 11 4 

我想向量化操作:

outer(X[1,],Y[1,]) + outer(X[2,],Y[2,]) + outer(X[3,],Y[3,]) - 這可能嗎? Mayby的東西與一般建築如:lapply(,FUN=outer),然後在列表中的元素的總和?否則,我必須循環outer(X[i,],Y[i,])

回答

6

這僅僅是matrix multiplication

t(X) %*% Y 
v  [,1] [,2] 
# [1,] 8 3 
# [2,] 11 4 

你需要一個2×2矩陣和兩個矩陣X和Y dimensons 3 * 2。移位X給出2 * 3,當乘以3 * 2矩陣時給出所需的2 * 2矩陣。