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
,然后再次转置结果。
我有一个矩阵 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
,然后再次转置结果。