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

如何在R中为向量各元素查找同向量中排除自身的最近值?

在R中实现向量元素排除自身后的最近值查找

构造示例数据

先还原你提供的示例数据框:

A <- data.frame(column_1 = c(1, 5, 6, 2, 3, 0, 5, 2, 1, 9))

核心实现代码

通过遍历每个元素的索引,排除当前元素后计算最近值:

# 遍历每个元素位置,计算排除自身后的最近值
A$column_2 <- lapply(seq_along(A$column_1), function(i) {
  # 提取排除当前元素的剩余向量
  remaining_vals <- A$column_1[-i]
  # 计算当前元素与剩余元素的绝对差值
  abs_diffs <- abs(A$column_1[i] - remaining_vals)
  # 找到最小差值对应的元素
  remaining_vals[which.min(abs_diffs)]
}) |> unlist()

如果习惯用purrr包,代码可以更简洁:

library(purrr)

A$column_2 <- map_dbl(seq_along(A$column_1), ~{
  remaining_vals <- A$column_1[-.]
  remaining_vals[which.min(abs(A$column_1[.] - remaining_vals))]
})

验证结果

运行代码后查看数据框A,结果与你期望的一致:

column_1 column_2
1         1        1
2         5        5
3         6        5
4         2        2
5         3        2
6         0        1
7         5        5
8         2        2
9         1        1
10        9        6

代码说明

  • seq_along(A$column_1)生成每个元素的索引,逐个处理每一行
  • A$column_1[-i]排除当前行的元素,得到剩余所有值的向量
  • which.min(abs_diffs)找到绝对差值最小的位置,对应剩余向量中的值就是最近值
  • 当存在多个相同最小差值的元素时(比如示例中的2),which.min会返回第一个出现的匹配项,符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:30:53