R中的乘法矩阵

时间:2015-08-21 11:29:19

标签: r matrix multiplication

我有一个矩阵a有24行44列,另一个b有44行和一列。我想将矩阵b的第一行与矩阵a的整列相乘,矩阵b的第二行与矩阵a的整列相乘等等。我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

我们可以复制第二个矩阵中的元素(' m2'),使长度与' m1'相同。然后进行乘法运算。

m1*m2[col(m1)]

为了复制元素,我们使用col,它返回矩阵列的数字索引(' m1')

 col(m1)
 #     [,1] [,2] [,3] [,4]
 #[1,]    1    2    3    4
 #[2,]    1    2    3    4
 #[3,]    1    2    3    4
 #[4,]    1    2    3    4
 #[5,]    1    2    3    4

通过m2[col(m1)],' m2'中的第一个元素即row1 column1元素被复制5次,第二次被复制5次,依此类推。

 m2[col(m1)]
 #[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4

数据

m1 <- matrix(1:20, ncol=4)
m2 <- matrix(1:4, nrow=4)

答案 1 :(得分:1)

此替代方案使用矢量回收:

t(t(m1) * as.vector(m2))

由于矢量以相同的方式循环(矩阵填充),我们需要首先转置m1,然后再转置结果。