将矩阵的一列乘以固定因子
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)]
.
提取更清楚
这可能是一个非常微不足道的问题,但我还没有找到可行的解决方案。这里有一个类似的问题,但没有得到可行的答案,所以我很感激任何建议。
我有一个简单的 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)]
.