在R中的一对矩阵之间执行逐行点积的有效方法是什么?

时间:2016-06-21 21:20:51

标签: r matrix

我有一个NxK矩阵x和另一个相同维度的矩阵,其中包含每个K要素和每个N群组的系数。我想要一个K向量,其中i条目是ix行的点积,i行为x行系数矩阵。例如,如果x = matrix(rep(1:3,each=2),ncol=2,byrow=TRUE) 是:

coeff = matrix(c(.5,1,0),nrow=3,ncol=2)

和coeff矩阵是:

(1,4,0)

结果应为向量(1,1),因为(.5,.5)1的点积为(2,2)(1,1)和{{1}的点积{}为} 4(3,3)(0,0)的点积为0。我可以想象通过调用索引上的每个迭代是一个点积来调用它,但我想知道是否有更好的方法使用像扫描或朋友这样的内置函数..

1 个答案:

答案 0 :(得分:4)

使用*将两个矩阵相乘,然后执行rowSums

rowSums(x * coeff)
[1] 1 4 0