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

如何在R中按行查找指定列范围(3-223列)最大值的列名

解决方案

方法一:使用dplyr包

先提前提取目标列的列名(第3到223列),再结合rowwise()和c_across()实现按行匹配最大值对应的列名,同时保留前两列:

library(dplyr)

# 提取第3到223列的列名
target_cols <- names(df)[3:223]

# 新增列存储最大值对应的列名
df <- df %>%
  rowwise() %>%
  mutate(max_col = target_cols[which.max(c_across(all_of(target_cols)))]) %>%
  ungroup()
  • target_cols提前锁定需要计算的列范围,避免后续误取其他列
  • all_of(target_cols)确保dplyr正确识别预定义的列名向量
  • ungroup()取消行分组,恢复数据框的常规操作效率

方法二:使用Base R(无需额外包)

如果不想加载dplyr,用apply()函数可以更高效地处理:

# 定义目标列的位置范围
target_cols_idx <- 3:223

# 按行计算最大值对应的列名,并新增到数据框
df$max_col <- apply(df[, target_cols_idx], 1, function(x) {
  names(df)[target_cols_idx][which.max(x)]
})
  • apply(df[, target_cols_idx], 1, ...)指定对目标列的每一行执行操作
  • 匿名函数中通过which.max(x)找到当前行最大值的位置,再对应到目标列的列名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:03:28