You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中实现矩阵行与对应向量行元素逐行相乘?

在R语言中实现矩阵行与对应向量元素相乘

刚好碰到过类似的需求,其实用R自带的向量化运算就能轻松搞定,不需要复杂的循环或者函数。先看你的示例数据:

# 定义2×2矩阵
w1 <- matrix(c(0,1, 2, 3), ncol = 2)
# 定义2×1向量
v1 <- matrix(c(0, 6), ncol = 1)

你的需求是让矩阵的每一行,和向量中对应行的元素相乘——也就是第一行所有元素乘v1的第一行,第二行所有元素乘v1的第二行。最简洁的方法就是直接用乘法运算符*:

# 直接相乘即可得到期望结果
result <- w1 * v1
print(result)

运行这段代码后,输出就是你想要的:

[,1] [,2]
[1,]    0    0
[2,]    6   18

原理说明

这其实是利用了R的维度广播机制:当你对维度不同但兼容的对象做算术运算时,R会自动将小维度的对象扩展成和大维度对象一致的结构,再进行元素级运算。这里v1是2×1的矩阵,w1是2×2的矩阵,R会自动把v1复制成2×2的矩阵(每一列都是原来的v1),然后和w1对应位置的元素相乘,正好实现了每行对应乘向量元素的效果。

如果你习惯用更“显式”的写法,也可以通过转置来实现,结果是一样的:

result <- t(t(w1) * v1)

不过显然直接相乘的写法更简洁高效,推荐优先使用这种方式。

内容的提问来源于stack exchange,提问作者Vedda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:49:24