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

dplyr的slice_min为何with_ties=FALSE返回NA而with_ties=TRUE不返回

dplyr的slice_min函数with_ties参数差异原因说明

这是dplyr的刻意设计逻辑,并非函数BUG,差异来源于两种参数下的筛选规则区别,以及R语言默认的NA值排序特性:

  • R语言默认排序规则中,NA值会被判定为大于所有有效数值,且NA和任何值做等值、大小比较的结果都是NA。

with_ties = TRUE时的筛选逻辑

slice_min在该参数下会筛选分组内数值严格等于最小值的行:
对于c分组,唯一的b列值为NA,无法通过比较判定它等于分组的最小值,所以该分组没有符合条件的行,会被直接过滤。

with_ties = FALSE时的筛选逻辑

slice_min在该参数下会先对分组内的行按排序规则排序,直接取前N行(默认N=1),不需要校验数值是否严格等于最小值:
c分组只有1行,排序后第一行就是该NA行,因此会被保留。

如果需要两种参数下行为统一,可以显式添加na_rm = TRUE参数,此时两种情况都会过滤掉没有有效值的c分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:36:02