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

R语言获取data.frame每列最大值对应行号的实现方法

问题原因

你的代码核心错误是which()的参数不符合要求:which()需要传入逻辑判断条件,而你直接传入了max(x)(返回当前列的最大值数值),无法完成匹配查询,所以得不到正确结果。

正确实现方式

方法1:修正lapply逻辑

沿用你原本的写法,只需要把which()的参数改成列值等于最大值的判断条件即可:

# 先得到每列最大值对应行号的list
res_list <- lapply(Data, function(x) which(x == max(x)))
# 转成你需要的data.frame格式
res_df <- as.data.frame(res_list)

运行后res_df输出和你期望的完全一致:

V1 v2 v3
1  5  5  3

方法2:内置函数简洁实现

使用R自带的max.col()函数可以更高效地完成需求,只需要先把数据框转置,把原数据的列转为转置后的行即可:

res_df <- as.data.frame(as.list(max.col(t(Data))))

提示:如果某列存在多个相同的最大值,which(x == max(x))会返回所有匹配的行号;如果需要固定取第一个/最后一个最大值的行号,可以给max.col指定ties.method参数,可选值为"random"、"first"、"last"。

内容的提问来源于stack exchange,提问作者Vinicius B. de S. Moreira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:15:08