R中的乘法矩阵

Multiplication Matrix in R

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

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

m1*m2[col(m1)]

为了复制元素,我们使用了 col,其中 returns 矩阵列的数字索引 ('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)

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

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

由于向量的回收方式与矩阵填充(按列)的方式相同,我们需要先转置m1,然后再次转置结果。