2013-03-25 87 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矩阵。