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

如何在R语言中实现两个向量两两求和且不覆盖运算结果

解决方法

方法1:修改原有循环(最直接)

你原来的代码错误在于每次循环都用单个值覆盖了向量C,正确的做法是每次将新的求和结果追加到C的末尾:

A = seq(10, 30, 10)
B = seq(1, 6, 1)
C = c()

for (i in B) {
  for (j in A) {
    C = c(C, j + i)  # 把新结果追加到C后面,而非覆盖原有内容
  }
}

执行后C会包含所有循环中的求和结果,顺序和你用print输出的完全一致。

方法2:用outer函数转成向量

outer函数可生成两个向量所有元素组合的运算结果(默认返回矩阵),我们只需将矩阵转成向量即可,无需用矩阵存储最终结果:

A = seq(10, 30, 10)
B = seq(1, 6, 1)
C = as.vector(outer(A, B, "+"))

outer(A, B, "+")生成的矩阵中,每一列对应B的一个元素与所有A元素的和,as.vector按列提取元素后,得到的C顺序和嵌套循环的输出完全匹配。

方法3:用expand.grid生成组合后求和

先通过expand.grid生成A和B所有元素的配对组合,再对每行元素求和:

A = seq(10, 30, 10)
B = seq(1, 6, 1)
combos = expand.grid(A = A, B = B)
C = combos$A + combos$B

expand.grid生成的数据框中,每行是A和B的一组元素配对,求和后得到的C顺序同样符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 22:10:17