在R中生成数据框内所有坐标两两配对对比的全组合列表
R坐标点全配对对比实现方案
需求说明
现有包含X、Y坐标列的R data.frame,示例数据如下:
dt = data.frame(X = seq(1, 5, by=1), Y = seq(1, 5, by=1))
需要新增final_X、final_Y两列,生成所有原始坐标与对比坐标的两两组合行,得到所有坐标的全配对对比结果。
实现方法
方法1:基础R实现(无需安装额外包)
通过merge做笛卡尔积全连接即可直接生成所有组合:
# 生成重命名后的对比坐标数据集 compare_dt <- setNames(dt, c("final_X", "final_Y")) # 全连接生成全配对结果 full_pair_result <- merge(dt, compare_dt)
方法2:tidyverse风格实现
使用tidyr::crossing更直观的生成笛卡尔积:
library(tidyverse) full_pair_result <- dt %>% crossing( dt %>% rename(final_X = X, final_Y = Y) )
结果验证
示例数据共5个坐标点,全配对后结果共5*5=25行,可通过如下代码查看前6行结果:
head(full_pair_result)
输出参考:
X Y final_X final_Y 1 1 1 1 1 2 1 1 2 2 3 1 1 3 3 4 1 1 4 4 5 1 1 5 5 6 2 2 1 1
内容的提问来源于stack exchange,提问作者Fleaf
相关产品推荐
相关产品推荐

