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

R语言查找Similarity列最大值对应的Feature列值

R语言查找data.frame中指定列最大值对应另一列取值的方法

首先加载示例测试数据:

df <- structure(list(Feature = c("Similarity_CEO", "Similarity_CFO", 
"Similarity_COO", "Similarity_CPO", "Similarity_CTO", "Similarity_CMO_CGO", 
"Similarity_CCO_CSO"), Similarity = c(0.647709116583091, 0.57912317932745, 
0.610563782018354, 0.568011165196869, 0.532707661875697, 0.595690196204727, 
0.575445639485977)), class = "data.frame", row.names = c(NA, 
-7L))

方法1:基础R原生写法(无任何依赖,兼容性最强)

无需加载第三方包,适配所有版本R,容错性最高:

# 返回Similarity列最大值对应的第一个Feature值
df$Feature[which.max(df$Similarity)]

运行以上代码针对示例数据的返回结果为[1] "Similarity_CEO",和数据中最大值0.6477对应的行完全匹配。

如果需要返回所有并列最大值对应的Feature值,可使用以下写法,注意添加na.rm = TRUE跳过缺失值避免计算报错:

df$Feature[df$Similarity == max(df$Similarity, na.rm = TRUE)]

方法2:dplyr包写法(适配tidyverse管道工作流)

如果日常使用tidyverse生态处理数据,可使用更符合管道逻辑的写法:

library(dplyr)
# 返回最大值对应的第一个Feature值
df %>% 
  slice_max(Similarity, n = 1, with_ties = FALSE) %>% 
  pull(Feature)

如果需要保留所有并列最大值,将参数with_ties = FALSE改为with_ties = TRUE即可。

常见方法失效原因排查

如果之前尝试的写法无法正常运行,优先排查以下问题:

  • 列名拼写不匹配:检查列名是否存在多余空格、大小写不一致问题,比如列名实际为全小写similarity时,匹配大写开头的Similarity会返回空值
  • 列类型错误:如果Similarity列是字符型存储的数值,最大值计算会按字符串字典序排序返回错误结果,需先执行df$Similarity <- as.numeric(df$Similarity)转换为数值型再计算
  • 异常值干扰:列中如果存在缺失值NA、无限值Inf,会导致max函数计算报错,计算时添加na.rm = TRUE参数跳过缺失值,提前清洗无限值即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:45:56