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

在R语言中查找满足规格要求的所有职位组合

覆盖全部规格的职位组合查找方案

示例数据准备

先模拟符合需求的示例数据框(如果实际数据结构不同,调整z列的处理方式即可):

# 目标规格列表
x <- c("a", "b", "c")
# 示例职位-规格数据框,z列用列表存储每个职位对应的规格
df <- data.frame(
  y = c("job1", "job2", "job3", "job6", "job7"),
  z = I(list("a", "b", "c", c("a", "b"), c("a", "b", "c")))
)

核心代码实现

# 生成所有可能的职位组合(从1个职位到全部职位的所有子集)
all_combinations <- unlist(lapply(1:nrow(df), function(k) combn(1:nrow(df), k, simplify = FALSE)), recursive = FALSE)

# 筛选出规格覆盖x全部元素的组合
valid_combinations <- lapply(all_combinations, function(idx) {
  # 合并当前组合的所有规格
  combined_specs <- unlist(df$z[idx])
  # 判断是否覆盖所有目标规格
  if (all(x %in% combined_specs)) {
    paste(df$y[idx], collapse = "+")
  } else {
    NULL
  }
})

# 清理空值,得到最终有效组合
valid_combinations <- unlist(valid_combinations)
# 输出结果
print(valid_combinations)

代码说明

  • 用combn函数生成所有k个职位的组合,循环k从1到总职位数,得到所有可能的职位子集
  • 对每个组合,合并其所有规格后,通过all(x %in% combined_specs)判断是否覆盖了目标规格的全部元素
  • 符合条件的组合会将职位名称用+连接,最终输出所有有效组合

适配不同z列格式

如果df中z列是逗号分隔的字符串(比如"a,b"),先添加拆分步骤:

# 拆分逗号分隔的规格字符串为列表
df$z <- strsplit(as.character(df$z), ",")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:44:59