rs0*_*028 2 r matrix apply sapply
我正在尝试使用 (s)apply 将两个不同维度的矩阵相乘。矩阵是:
xx <- matrix(c(1, 2, 3, 4, 5, 6), nrow=2, ncol=3, byrow=T)
yy <- matrix(c(10, 100), nrow=2, ncol=1, byrow=T)
Run Code Online (Sandbox Code Playgroud)
我想要的是将一个矩阵的每一行与另一个矩阵的每一行相乘并获得:
> zz
[,1] [,2] [,3]
[1,] 10 20 30
[2,] 400 500 600
Run Code Online (Sandbox Code Playgroud)
我试过sapply(yy, function(x) xx*x)产生一个 6x2 矩阵而不是我想要的 3x2 矩阵。还apply(yy, 2, function(x) xx*x)产生一个6X1矩阵不起作用。在过去的类似情况下,我使用sapply没有问题,所以我不明白为什么这现在不起作用(我总是在绕着头走时遇到一些麻烦*apply)。我究竟做错了什么?
转换yy为向量 by c(),xx乘法时会回收到 的维数。
xx * c(yy)
# [,1] [,2] [,3]
# [1,] 10 20 30
# [2,] 400 500 600
Run Code Online (Sandbox Code Playgroud)
或通过矩阵乘法:
diag(c(yy)) %*% xx
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
392 次 |
| 最近记录: |