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

如何获取5组维恩图各分区对应的唯一元素列表?

R语言5组维恩图各分区元素提取方案

你可以通过基础R逻辑实现需求,无需依赖限制分组数量的第三方工具,支持任意N组的维恩分区元素提取:

首先整理你的输入分组为命名列表,后续仅需修改该列表即可适配你的实际数据:

# 分组命名列表,d1-d5对应你的5个分组
set_list <- list(
  d1 = c("01100", "01110", "01120", "01200", "01210", "01212", "01230", "01250", "01240"),
  d2 = c("01100", "01110", "01120", "01200", "01210", "01240"),
  d3 = c("01100", "01110", "01200", "01210", "01230", "01250", "01240", "01501"),
  d4 = c("01100", "01200", "01210", "01212", "01230", "01250", "01240", "01501", "01503"),
  d5 = c("01100", "01110", "01120", "01200", "01210", "01212", "01240", "05417")
)

运行核心计算逻辑:

# 提取所有分组的唯一元素
all_unique_items <- unique(unlist(set_list))

# 遍历每个元素,标记其所属的维恩分区
item_partition_map <- lapply(all_unique_items, function(item) {
  # 匹配元素所属的所有分组名称
  in_sets <- names(which(sapply(set_list, function(set) item %in% set)))
  # 生成分区名称,格式为unique_to_分组1_分组2...
  partition_tag <- paste0("unique_to_", paste(in_sets, collapse = "_"))
  return(data.frame(item = item, partition = partition_tag))
})
partition_df <- do.call(rbind, item_partition_map)

# 按分区分组,得到每个分区对应的元素列表
final_result <- split(partition_df$item, partition_df$partition)

你可以直接按分区名称调取对应元素,空分区会返回长度为0的向量,你可以自行转换为None展示:

# 调取仅属于d5的元素
> final_result$unique_to_d5
[1] "05417"

# 调取仅属于d1的元素,不存在时返回None
> if (length(final_result$unique_to_d1) == 0) "None" else final_result$unique_to_d1
[1] "None"

# 调取仅属于d4的元素
> final_result$unique_to_d4
[1] "01503"

如果需要输出为数据框格式,可直接使用上面生成的partition_df,每行对应一个元素和其所属的分区。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:57:03