将矩阵的一列乘以固定因子

Multiply one column of matrix with fixed factor

这可能是一个非常微不足道的问题,但我还没有找到可行的解决方案。这里有一个类似的问题,但没有得到可行的答案,所以我很感激任何建议。

我有一个简单的 3x3 矩阵,想用一个固定因子乘以第二列。 示例:

m<-matrix(rep(c(1,2,3),1*3),nrow=3)
m
     [,1] [,2] [,3]
[1,]    1    1    1
[2,]    2    2    2
[3,]    3    3    3

如果我尝试做 m[,2]*5,它会给我 [1] 5 10 15

我想要的结果如下所示:

     [,1] [,2] [,3]
[1,]    1    5    1
[2,]    2    10   2
[3,]    3    15   3

不会那么难吧?

就这样分配吧m[,2] <- m[,2]*5

我认为比单列分配更通用的方法是 sweep 和向量 c(1,5,1):

 sweep(m, 2, c(1,5,1), "*")
     [,1] [,2] [,3]
[1,]    1    5    1
[2,]    2   10    2
[3,]    3   15    3

然后您可以将单个向量应用于矩阵,而无需重复执行单列操作:

sweep(m, 2, c(2,5,10), "*")
     [,1] [,2] [,3]
[1,]    2    5   10
[2,]    4   10   20
[3,]    6   15   30

@akrun 在评论 m*c(1, 5, 1)[col(m)] 中的解决方案似乎可以有效地做到这一点,但我很难理解它是如何工作的。它似乎取决于操作的优先级,如果写成:c(1, 5, 1)[col(m)]*m 对我来说会更容易理解。这使得向量 c(1, 5, 1)[col(m)] 首先计算而不是 m*c(2,5,10)[col(m)].

提取更清楚