1

R-ベクトルが2つの行列にある場合に、外積の合計の計算をベクトル化する方法-XおよびY

例 :

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,])- 出来ますか ?たぶん:のような一般的な構造lapply( ,FUN=outer)で、リスト内の要素の合計を取りますか?それ以外の場合は、ループする必要がありますouter(X[i,],Y[i,])

4

1 に答える 1

6

これはただmatrix multiplication

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

2 * 2の行列が必要であり、行列XとYは両方とも3*2の次元です。Xを転置すると2*3になり、3*2行列を掛けると目的の2*2行列になります。

于 2013-03-25T22:53:46.527 に答える