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

R语言如何实现两个向量所有distinct值的交叉拼接?

R 实现向量元素全组合拼接的解决方案

你当前使用paste0(c("A","B"),c("A1", "B1"))仅得到2个拼接结果,是因为R中长度相等的向量传入paste0时,默认执行对位拼接逻辑:仅将两个向量相同索引位置的元素一一配对拼接,不会生成全排列组合。

你可以通过以下几种方式实现需求:

方法1:使用outer函数(最简洁)

outer函数原生支持两个输入向量的全组合运算,直接指定运算函数为paste0即可:

res <- as.vector(outer(c("A","B"), c("A1", "B1"), paste0))
# 如需匹配你期望的输出顺序,加sort即可
res <- sort(res)

运行后res的输出为:[1] "AA1" "AB1" "BA1" "BB1"

方法2:使用expand.grid生成笛卡尔积后拼接

先通过expand.grid生成两个向量的全组合数据框,再按行拼接每一行的两个元素:

res <- apply(expand.grid(c("A","B"), c("A1", "B1")), 1, paste0, collapse = "")
res <- sort(res)

方法3:tidyverse 生态实现

如果你习惯使用tidyverse系列工具,可以用crossing生成全组合后拼接:

library(tidyr)
library(dplyr)
res <- crossing(v1 = c("A","B"), v2 = c("A1","B1")) %>% 
  mutate(res = paste0(v1, v2)) %>% 
  pull(res)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:09:02