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

如何获取DataFrame中某列最大值对应的行名称?

解决方法

基础R实现

你已经通过which.max(df[,1])拿到了正确的位置索引,直接用这个索引提取行名即可:

rownames(df)[which.max(df[,1])]

错误原因分析

  • 你的第一个代码rownames(which.max(df[,1]))返回NULL:因为which.max()返回的是整数类型的位置编号,不是带有行名属性的对象,rownames()只能读取有行名属性的结构(比如数据框、矩阵),所以对整数调用会返回NULL。
  • 第二个代码rownames(df)[apply(df,1,which.ax)]问题有两个:
    1. 拼写错误:which.ax应该是which.max
    2. 逻辑错误:apply(df, 1, ...)是按行遍历数据框,返回的是每行中最大值所在的列索引,用这些列索引去取行名,自然会得到大量重复的行名,完全不符合你的需求。

可选的tidyverse方式(如果你使用dplyr)

如果你习惯用tidyverse生态,也可以这样实现:

library(dplyr)
df %>% 
  slice_max(n = 1, order_by = !!sym(colnames(df)[1])) %>% 
  rownames()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:15:40