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

求R语言代码:生成9个等级按2/3/4分组的所有等可能分法

生成9个等级按2/3/4规模分组的所有等可能分法(R语言实现)

要生成所有符合要求的分法,核心思路是通过组合选择避免重复计算:先从9个等级中选2个作为第一组,再从剩余7个中选3个作为第二组,最后剩下的4个自动成为第三组。这种方式的总组合数为 C(9,2)*C(7,3) = 36*35 = 1260,正好匹配你给出的总数。

以下是可直接运行的R代码:

# 定义9个等级(可替换为任意你需要的等级标识,比如字符型)
grades <- 1:9

# 初始化存储所有分法的列表
all_groupings <- list()
counter <- 1

# 遍历所有2元素组合作为第一组
for (group1 in combn(grades, 2, simplify = FALSE)) {
  # 计算选完第一组后剩余的等级
  remaining_after_group1 <- setdiff(grades, group1)
  # 遍历剩余等级中的3元素组合作为第二组
  for (group2 in combn(remaining_after_group1, 3, simplify = FALSE)) {
    # 第三组为剩余的4个等级
    group3 <- setdiff(remaining_after_group1, group2)
    # 将当前分法存入列表,排序是为了统一展示格式(可选)
    all_groupings[[counter]] <- list(
      group_2 = sort(group1),
      group_3 = sort(group2),
      group_4 = sort(group3)
    )
    counter <- counter + 1
  }
}

# 验证分法总数
cat("总分法数:", length(all_groupings), "\n")  # 输出应为1260

# 查看前3种分法示例
head(all_groupings, 3)

代码说明

  1. combn函数:用于生成指定数量的元素组合(不考虑顺序),确保每组内的元素不会重复排列。
  2. setdiff函数:用于计算剩余未被选中的等级,避免手动筛选出错。
  3. 排序处理:对每个组内的元素排序是为了让分法的展示格式更统一,如果你不需要可以去掉sort()。
  4. 灵活性:如果你的等级不是数值(比如字母、自定义标签),只需修改grades向量即可,代码逻辑完全通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 03:11:01