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

如何在指定容差下将数值向量的值匹配到目标整数向量?

向量按容差匹配目标整数的实现方案

给定输入向量:

input_vec <- c(0.399999999999977, 0.000399999999899592, 0, 0, 1.00239999999985)

需要将每个元素匹配到目标整数集合{0,1,2,3,4},匹配规则为:元素与目标整数的绝对差值≤0.1时视为匹配成功,无符合条件的整数则返回NA。预期输出为:

c(NA, 0, 0, 0, 1)

实现代码

# 定义输入向量、目标整数和容差
input_vec <- c(0.399999999999977, 0.000399999999899592, 0, 0, 1.00239999999985)
target_ints <- 0:4
tolerance <- 0.1

# 自定义匹配函数
match_with_tol <- function(x, targets, tol) {
  diffs <- abs(x - targets)
  valid_matches <- targets[diffs <= tol]
  if (length(valid_matches) == 1) valid_matches else NA
}

# 应用函数得到结果
output_vec <- sapply(input_vec, match_with_tol, targets = target_ints, tol = tolerance)

# 查看结果
output_vec

代码说明

  1. 核心逻辑:对每个输入元素,计算其与所有目标整数的绝对差值,筛选出差值≤容差的整数;
  2. 唯一性处理:由于目标整数间隔为1,容差设为0.1,每个元素最多只会匹配到一个目标整数,若没有符合条件的则返回NA;
  3. 运行结果:执行代码后会得到预期的NA 0 0 0 1向量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:48:18