【问题标题】:R - how to vectorize computation of sum of outer products, when vectors are in two matrices?R - 当向量在两个矩阵中时,如何向量化外积之和的计算?
【发布时间】:2013-03-25 22:46:35
【问题描述】:

R - 当向量在两个矩阵中时如何向量化外积和的计算 - XY

示例:

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,])

【问题讨论】:

    标签: r vectorization


    【解决方案1】:

    这只是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 矩阵。

    【讨论】:

      猜你喜欢
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多