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

如何筛选两列DataFrame中反向重复的基因对?

移除DataFrame中的反向重复基因对

下面提供两种高效的解决方法,适用于处理无序基因对的重复问题:

方法1:使用dplyr包(简洁直观)

利用pmin和pmax对每行的基因对进行排序,再基于排序后的结果去重:

library(dplyr)

# 生成唯一无序基因对
unique_pairs <- all_pairs %>%
  mutate(
    # 对每行的两个基因按字母顺序排序
    gene_sorted1 = pmin(gene1, gene2),
    gene_sorted2 = pmax(gene1, gene2)
  ) %>%
  # 保留唯一的排序后基因对,同时保留原数据列
  distinct(gene_sorted1, gene_sorted2, .keep_all = TRUE) %>%
  # 恢复原列结构
  select(gene1, gene2)

方法2:使用基础R(无需额外依赖)

通过apply对每行基因排序,再用duplicated筛选唯一行:

# 对每行的基因对进行排序,生成矩阵
sorted_pairs <- t(apply(all_pairs, 1, sort))

# 筛选出非重复的行索引
unique_rows <- !duplicated(sorted_pairs)

# 提取唯一的基因对
unique_pairs <- all_pairs[unique_rows, ]

原理说明

两种方法的核心逻辑一致:将无序的反向基因对转换为完全相同的有序对(比如(BICRA, ASXL1)和(ASXL1, BICRA)排序后均为(ASXL1, BICRA)),再通过去重操作保留每组反向对中的唯一一行。自身配对(如(ASXL1, ASXL1))会被保留,因为排序后不会产生重复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:50:39