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

在dplyr::filter中替代==以适配浮点数的方案

适配浮点数的dplyr筛选优化方案
  • 使用dplyr::near()函数(推荐)
    这是dplyr专为浮点数相等判断设计的函数,会自动处理浮点数精度误差,默认容差为.Machine$double.eps^0.5,也可自定义精度:

    # 默认容差
    data_lg <- data %>% filter(near(a_ov_t, target_at + 0.1))
    # 自定义容差(比如1e-8)
    data_lg <- data %>% filter(near(a_ov_t, target_at + 0.1, tol = 1e-8))
    
  • 按指定精度取整后判断
    如果你的数据精度固定(比如保留1位小数),可以用round()统一精度后再比较,避免依赖倍数计算:

    data_lg <- data %>% filter(round(a_ov_t, 1) == round(target_at + 0.1, 1))
    
  • 区间范围筛选
    手动设定极小的容差区间,直接判断数值是否落在目标值附近:

    tolerance <- 1e-8
    target_val <- target_at + 0.1
    data_lg <- data %>% filter(a_ov_t > target_val - tolerance, a_ov_t < target_val + tolerance)
    

这些方案比直接乘以整数的方法更通用:near()函数适配绝大多数浮点数场景,取整法适合精度固定的业务场景,区间筛选则能让你完全控制精度范围,避免因数值位数变化而调整代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:07:03