R中矩阵的乘法
Multiplication of matrix in R
我有以下问题:
w <- matrix(1:3,nrow=3,ncol=1)
mymat <- as.matrix(cbind(a = 6:15, b = 16:25, c= 26:35))
mymat
a b c
[1,] 6 16 26
[2,] 7 17 27
[3,] 8 18 28
[4,] 9 19 29
[5,] 10 20 30
[6,] 11 21 31
[7,] 12 22 32
[8,] 13 23 33
[9,] 14 24 34
[10,] 15 25 35
我想在与 mymat 大小相同的矩阵中获得以下结果:
a b c
[1,] 6*1 16*2 26*3
[2,] 7*1 17*2 27*3
[3,] 8*1 18*2 28*3
...
我已经尝试了 lappy 功能,但我无法获得我想要的结果。谢谢!
1) diag Post 将其乘以适当的对角矩阵。我们可以省略 c(),但如果 w 是向量而不是矩阵,它不会造成伤害。
mymat %*% diag(c(w))
2) KhatriRao 我们可以交替使用 KhatriRao 产品。如果 w 是问题中定义的 w,则 matrix
可以选择性地省略,但我们将其包括在内以防 w 实际上是一个向量。请注意,Matrix 包随 R 一起提供,因此不必安装。
library(Matrix)
KhatriRao(mymat, t(matrix(w)))
3) mapply
mapply(`*`, as.data.frame(mymat), w)
使用sweep()
:
sweep(mymat, 2, w, "*")
将w
转换为相同维度的矩阵:
mymat * t(w)[rep(1, NROW(mymat)), ]
我们也可以使用 col
来复制值,然后乘以 base R
mymat * w[col(mymat)]
我有以下问题:
w <- matrix(1:3,nrow=3,ncol=1)
mymat <- as.matrix(cbind(a = 6:15, b = 16:25, c= 26:35))
mymat
a b c
[1,] 6 16 26
[2,] 7 17 27
[3,] 8 18 28
[4,] 9 19 29
[5,] 10 20 30
[6,] 11 21 31
[7,] 12 22 32
[8,] 13 23 33
[9,] 14 24 34
[10,] 15 25 35
我想在与 mymat 大小相同的矩阵中获得以下结果:
a b c
[1,] 6*1 16*2 26*3
[2,] 7*1 17*2 27*3
[3,] 8*1 18*2 28*3
...
我已经尝试了 lappy 功能,但我无法获得我想要的结果。谢谢!
1) diag Post 将其乘以适当的对角矩阵。我们可以省略 c(),但如果 w 是向量而不是矩阵,它不会造成伤害。
mymat %*% diag(c(w))
2) KhatriRao 我们可以交替使用 KhatriRao 产品。如果 w 是问题中定义的 w,则 matrix
可以选择性地省略,但我们将其包括在内以防 w 实际上是一个向量。请注意,Matrix 包随 R 一起提供,因此不必安装。
library(Matrix)
KhatriRao(mymat, t(matrix(w)))
3) mapply
mapply(`*`, as.data.frame(mymat), w)
使用sweep()
:
sweep(mymat, 2, w, "*")
将w
转换为相同维度的矩阵:
mymat * t(w)[rep(1, NROW(mymat)), ]
我们也可以使用 col
来复制值,然后乘以 base R
mymat * w[col(mymat)]