我有一个矩阵a
有24行44列,另一个b
有44行和一列。我想将矩阵b
的第一行与矩阵a
的整列相乘,矩阵b
的第二行与矩阵a
的整列相乘等等。我怎么能这样做?
答案 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
,然后再转置结果。