r中的矩阵乘法

mik*_*ike 5 r matrix multiplication

我试图将矩阵的每一行乘以另一个矩阵的列.例如:

mat1 <- matrix(rnorm(10), nrow=5, ncol=2)
mat2 <- matrix(rnorm(5), nrow=5)
Run Code Online (Sandbox Code Playgroud)

我想用mat2乘以mat1的每一行.所需的输出形状为5*2.

Jos*_*ien 6

您可以使用Mat2apply()每一列乘以mat2.(将执行R通常是两个等长矢量的矢量化元素乘法)."*"

apply(mat1, 2, "*", mat2)
           [,1]       [,2]
[1,]  0.1785476  0.4175557
[2,]  0.2644247 -0.3745997
[3,] -0.5328542  0.8945527
[4,] -2.7351502 -0.7715341
[5,] -0.9719129 -0.1346929
Run Code Online (Sandbox Code Playgroud)

或者更好的是,转换mat1为矢量以利用R的回收规则:

mat2 <- matrix(1:10, ncol=2)
mat1 <- matrix(1:5, ncol=1)

as.vector(mat1)*mat2
     [,1] [,2]
[1,]    1    6
[2,]    4   14
[3,]    9   24
[4,]   16   36
[5,]   25   50
Run Code Online (Sandbox Code Playgroud)