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

R语言:提取指定列子集(27-168列)每行最大值列名出错求助

问题原因分析

你的代码出错的核心原因是:max.col(df[c(27:168)])返回的是第27-168列组成的子数据框内部的列索引(范围为1到142),但你直接用colnames(df)[这个索引]时,会取原数据框的第1到142列的列名,而非目标的27-168列,因此才会出现你想排除的列名,同时匹配结果也完全错误。

正确解决方案

方案1:先提取目标列子数据框(逻辑更清晰)

先单独提取需要分析的列,再基于子数据框获取对应列名:

# 提取第27到168列的子数据框
target_cols <- df[, 27:168]
# 给原数据框新增列,存储每行最大值对应的列名
df$maxcol <- colnames(target_cols)[max.col(target_cols, ties.method = "first")]

方案2:直接索引目标列的列名(更简洁)

如果不想额外创建子数据框,可以直接对原数据框的列名切片后匹配索引:

df$maxcol <- colnames(df)[27:168][max.col(df[, 27:168], ties.method = "first")]

两种写法都能准确返回第27-168列中每行最大值对应的列名,不会涉及其他无关列。

内容的提问来源于stack exchange,提问作者Sinéad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:42:37