如何不使用subset函数,通过逻辑索引与min函数查找最小值所在行
R 非subset函数实现最小值对应行筛选
核心实现逻辑
直接使用R数据框的原生逻辑索引语法结合min()函数即可实现完全等同subset()的效果,核心代码如下:
# 完整实现代码 df[df$B == min(df$B), ]
步骤拆解
- 计算B列最小值:调用
min(df$B)得到示例数据中B列的最小值为69 - 生成逻辑索引:通过
df$B == min(df$B)生成布尔向量,逐行匹配B列是否等于最小值,匹配项返回TRUE,否则返回FALSE - 行筛选:将上述布尔向量作为数据框的行筛选条件(方括号内逗号前的位置),逗号后留空代表保留所有列,即可得到目标行
示例运行结果
针对你提供的测试数据集,运行上述代码后输出结果如下:
Month A B 2 F 48 69
注意:如果B列存在多个相同的最小值,该方法会返回所有符合条件的行,效果和你原有的
subset实现完全一致。
内容的提问来源于stack exchange,提问作者Narimanoglu
相关产品推荐
相关产品推荐

