我知道这是一个非常基本的问题,抱歉.
我想用矩阵乘以矩阵的每一行.所以我有:
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)