我有一个数字matrix
有 25 列和 23 行,长度为 25 的向量。如何在不使用 for
的情况下将矩阵的每一行乘以向量循环?
结果应该是一个 25x23 矩阵(与输入大小相同),但每一行都已乘以向量。
从@hatmatrix的答案中添加了可重现的示例:
matrix <- matrix(rep(1:3,each=5),nrow=3,ncol=5,byrow=TRUE)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 1 1 1
[2,] 2 2 2 2 2
[3,] 3 3 3 3 3
vector <- 1:5
所需输出:
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 2 4 6 8 10
[3,] 3 6 9 12 15
最佳答案
我认为您正在寻找sweep()
。
# Create example data and vector
mat <- matrix(rep(1:3,each=5),nrow=3,ncol=5,byrow=TRUE)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 1 1 1
[2,] 2 2 2 2 2
[3,] 3 3 3 3 3
vec <- 1:5
# Use sweep to apply the vector with the multiply (`*`) function
# across columns (See ?apply for an explanation of MARGIN)
sweep(mat, MARGIN=2, vec, `*`)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 2 4 6 8 10
[3,] 3 6 9 12 15
它一直是 R 的核心功能之一,尽管多年来对其进行了改进。
关于r - 将矩阵的行乘以向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3643555/