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

R语言使用which.max取行最大值时如何获取最后出现的对应列名

R逐行提取最大值对应最后一列名的解决方案

问题原因

which.max()函数默认仅返回第一个最大值对应的索引,因此无法匹配取最后一次出现最大值列名的需求。

解决方案1:自定义函数(无额外包依赖)

直接逐行计算最大值,提取所有等于最大值的位置后取最后一个:

# 自定义取最后一个最大值索引的函数
which.max.last <- function(x) {
  max_val <- max(x)
  # 若需过滤缺失值,替换为 max_val <- max(x, na.rm = TRUE)
  tail(which(x == max_val), 1)
}

# 逐行计算得到结果
nams <- names(test)[apply(test, 1, which.max.last)]

解决方案2:反转列序简化实现

通过反转列的顺序,用原生which.max()取反转后的第一个最大值,再映射回原列名:

nams <- names(test)[ncol(test) - apply(test[, ncol(test):1], 1, which.max) + 1]

输出验证

两种方法运行后得到的nams结果如下,与预期完全一致:

[1] "M.trust" "I.trust" "I.trust" "M.trust" "M.trust" "H.trust"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:54:05