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

如何筛选或生成不考虑顺序的tibble组合?

两种实现方式:直接生成或筛选现有数据

一、直接生成带重复的无序组合

如果想一步到位生成符合要求的无序组合(允许元素重复,比如(1,1)这类),可以用gtools包的combinations()函数,设置repeats.allowed = TRUE:

library(gtools)
library(tibble)

# 生成无序组合并转为tibble
as_tibble(combinations(n = 3, r = 2, v = c(1,2,3), repeats.allowed = TRUE), 
          .name_repair = ~c("X1", "X2"))

运行后直接得到目标结果:

# A tibble: 5 × 2
     X1    X2
  <int> <int>
1     1     1
2     1     2
3     1     3
4     2     2
5     3     3

二、对已生成的tibble进行筛选

如果已经通过tidyr::crossing生成了全量有序组合,只需添加筛选条件X1 <= X2,就能去掉重复的无序组合:

library(tidyr)
library(dplyr)

crossing(X1 = c(1,2,3), X2 = c(1,2,3)) %>%
  filter(X1 <= X2)

这段代码会自动剔除X1 > X2的行(即你提到的第4、6、7、8行),最终得到和上面一致的结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:42:58