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

R语言如何计算向量所有两两元素组合的和并生成对应矩阵

R生成向量两两元素求和的矩阵

你需要的两两元素和矩阵可以通过以下几种R原生方法实现,不需要依赖第三方包。

方法1:outer函数(最优方案)

outer是R内置的外运算函数,支持自定义两个向量元素的两两运算规则,用来做求和代码最简洁、运行效率最高:

# 示例向量
vec <- c(1, 2, 3, 4, 5)
# 计算两两和矩阵
sum_mat <- outer(vec, vec, `+`)

运行后输出的sum_mat和你给出的期望结果完全一致:

[,1] [,2] [,3] [,4] [,5]
[1,]    2    3    4    5    6
[2,]    3    4    5    6    7
[3,]    4    5    6    7    8
[4,]    5    6    7    8    9
[5,]    6    7    8    9   10

该方法为向量化运算,即使处理长度很大的向量也能保持很高的运行速度,是这类需求的首选实现。

方法2:矩阵复制相加

如果想更直观地体现“每个行元素和每个列元素相加”的逻辑,可以通过复制向量生成同尺寸的行矩阵、列矩阵后直接相加:

n <- length(vec)
# 列方向复制向量生成矩阵,加行方向复制向量生成的矩阵
sum_mat <- matrix(vec, nrow = n, ncol = n) + 
           matrix(vec, nrow = n, ncol = n, byrow = TRUE)

也可以用rep函数实现同样的复制逻辑:

n <- length(vec)
sum_mat <- matrix(rep(vec, n) + rep(vec, each = n), nrow = n)

以上两种写法得到的结果和outer方法完全相同。

注意事项

不建议使用双层for循环遍历向量下标逐个计算赋值,R中循环的运行效率远低于向量化运算,当向量长度较大时性能差距会非常明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 05:12:16