将矩阵的每一行乘以r中的向量的好方法

Jes*_*a B 5 r

我知道这是一个非常基本的问题,抱歉.

我想用矩阵乘以矩阵的每一行.所以我有:

mat=matrix(1,2,4)
vec=c(1,2,3,4)

#works but ugly:
new.mat=mat
for(i in 1:nrow(mat)){
  new.mat[i,]=mat[i,]*vec
}
Run Code Online (Sandbox Code Playgroud)

我以为我找到了'应用'的答案,但我无法以同样的方式工作.

Sim*_*lon 12

我想这就是你要找的......

t( t(mat) * vec )
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    1    2    3    4
Run Code Online (Sandbox Code Playgroud)

*像R中的大多数其他运营商一样是矢量化的.这t是必要的,因为R将按列方式回收.该apply解决方案是:

t( apply( mat , 1 , `*` , vec ) )
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    1    2    3    4
Run Code Online (Sandbox Code Playgroud)