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

R语言如何获取数据框每行三列最大值对应的列名

R 取每行最大值对应列名的实现方法

问题原因

原有代码调用max()仅返回最大值的数值,没有匹配对应列名的逻辑,因此无法得到预期结果。

解决方案

1. 基于tidyverse管道的修改方案

沿用原有的rowwise()逻辑,调整mutate内的取值逻辑即可:

library(dplyr)
# 示例数据
x = c(1,2,5,4,5 ) 
y = c(2,3,3,1,1 )
z = c(4,4,2,1,1 )
df<-data.frame(x,y,z)

# 实现代码
df <- df %>% 
  rowwise() %>% 
  mutate(max_col = names(.)[which.max(c_across(x:z))])

如果存在多列数值同为最大值的场景,需要返回所有符合条件的列名,可以调整为:

df <- df %>% 
  rowwise() %>% 
  mutate(max_col = paste0(names(.)[c_across(x:z) == max(c_across(x:z))], collapse = ","))

2. 更简洁的base R实现方案

如果不需要依赖tidyverse包,用apply按行处理执行效率更高:

df$max_col <- apply(df, 1, function(row) names(row)[which.max(row)])

输出效果

处理后的df结果如下:

xyzmax_col
124z
234z
532x
411x
511x

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:36:03