r - 将矩阵的行乘以向量?

标签 r vector matrix multiplication

我有一个数字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/

相关文章:

r - ggplot2:在图例中显示缺失值颜色

c++ - 在不创建新子 vector 的情况下获取 vector 范围

r - 如何通过重复观察获取向量中的单个元素

r - 联合返回错误 'no applicable method for ' 联合 _' applied to an object of class "c ('double' , 'numeric' )"

R:计算每个ID的变量区分的每日数量

r - 如何在 Linux (Red Hat/CentOS) 上更新到特定的 R 版本,同时保持以前的版本?

c++ - std::vector 的 std::vector 邻接

C++ - 如何将静态字典制作成查找矩阵

python - 在不使用 np.tile() 或创建新向量的情况下将向量扩展 n 次以适应更大的矩阵

python - 构造除numpy中的一个元素外所有元素为零的矩阵的有效方法