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

如何筛选与nr种群个体距离≤0.01的fr2100个体

筛选符合坐标范围的PCA个体

核心思路

要完成这个筛选,关键是验证fr2100中的每个个体,是否存在至少一个nr个体的Dim.1和Dim.2坐标,同时落在该个体对应坐标的±0.01区间内。针对大样本量,优先选择效率更高的向量化或批量匹配方式。

具体代码实现

假设ind是包含两个种群的列表,每个种群为带个体标识、Dim.1、Dim.2列的数据框:

步骤1:拆分数据集

# 提取两个种群的单独数据框
fr_data <- ind$fr2100
nr_data <- ind$nr

步骤2:两种筛选方案

方案1:基础R原生实现

# 遍历每个fr个体,检查是否存在符合条件的nr个体
match_result <- apply(fr_data[, c("Dim.1", "Dim.2")], 1, function(fr_coord) {
  any(
    abs(nr_data$Dim.1 - fr_coord[1]) <= 0.01 &
    abs(nr_data$Dim.2 - fr_coord[2]) <= 0.01
  )
})

# 提取符合条件的fr2100个体
selected_fr <- fr_data[match_result, ]

方案2:dplyr+tidyr语法(更易读)

library(dplyr)
library(tidyr)

# 交叉连接两个数据集,筛选后去重得到目标个体
selected_fr <- fr_data %>%
  crossing(nr_data) %>%
  filter(abs(Dim.1.x - Dim.1.y) <= 0.01,
         abs(Dim.2.x - Dim.2.y) <= 0.01) %>%
  distinct(across(all_of(colnames(fr_data))))

注意事项

  • 由于两个种群样本量较大(总匹配次数约3300万),基础R的apply方法可能稍慢,dplyr的交叉连接在现代R版本中优化较好,也可改用data.table进一步提升处理速度。
  • 提前确认Dim.1和Dim.2为数值类型,避免因数据类型错误导致匹配失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:42:46