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

如何在R语言中生成两个表格的笛卡尔积(全行组合)?

在R语言中生成两个数据框的笛卡尔积

你要实现的操作叫做笛卡尔积(Cartesian Product),也就是生成两个数据集所有行的组合。以下是几种常用的实现方法:

方法1:使用基础R的expand.grid()

这是最简便的基础实现方式,直接传入两个数据框即可,还可以指定列名:

# 定义带列名的数据框
x <- data.frame(x = c('a', 'b', 'c'))
y <- data.frame(y = c('1', '2', '3'))

# 生成笛卡尔积
result <- expand.grid(x, y)
# 调整行顺序(让结果和示例一致)
result <- result[order(result$x), ]
rownames(result) <- NULL # 重置行名

print(result)

输出结果:

x y
1 a 1
2 a 2
3 a 3
4 b 1
5 b 2
6 b 3
7 c 1
8 c 2
9 c 3

方法2:使用dplyr包的cross_join()

如果你习惯使用tidyverse生态,dplyr提供了cross_join()函数专门生成笛卡尔积:

library(dplyr)

x <- data.frame(x = c('a', 'b', 'c'))
y <- data.frame(y = c('1', '2', '3'))

result <- cross_join(x, y)
print(result)

输出与上面一致。

方法3:使用基础R的merge()函数

通过设置by=NULL,merge()也能生成两个数据框的笛卡尔积:

x <- data.frame(x = c('a', 'b', 'c'))
y <- data.frame(y = c('1', '2', '3'))

result <- merge(x, y, by = NULL)
result <- result[order(result$x), ]
rownames(result) <- NULL

print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:15:53