将矩阵的每列乘以R中的向量的最佳方法是什么

时间:2015-11-11 21:29:41

标签: r

假设我有一个缩放因子,例如:

sf<-c(0.9, 0.8, 1.1)

和矩阵:

m0<-matrix(c(1:6), nrow=2, ncol=3)     
      [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

m的每一列与sf的相应元素相乘的最佳方式是什么,例如

m1<-matrix(c(0.9, 1.8, 2.4, 3.2, 5.5, 6.6), 2, 3)
     [,1] [,2] [,3]
[1,]  0.9  2.4  5.5
[2,]  1.8  3.2  6.6

2 个答案:

答案 0 :(得分:2)

可能不是“最佳方式”,但您可以使用sweep()

sweep(m0, 2, sf, "*")
#      [,1] [,2] [,3]
# [1,]  0.9  2.4  5.5
# [2,]  1.8  3.2  6.6

答案 1 :(得分:2)

或者您可以使用col

m0 * sf[col(m0)]
#      [,1] [,2] [,3]
# [1,]  0.9  2.4  5.5
# [2,]  1.8  3.2  6.6

或双转置

t(t(m0) * sf)
#      [,1] [,2] [,3]
# [1,]  0.9  2.4  5.5
# [2,]  1.8  3.2  6.6