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

R语言如何提取数据框每行前N大数值对应的列名

R实现取每行数值前K大对应的列名

你可以通过以下两种方式实现需求,支持自定义取前N个最大值对应的列名:

基础R实现

无需安装额外依赖,直接运行即可:

# 示例数据
DF <- data.frame(V1=c(2,8,1),V2=c(7,3,5),V3=c(9,6,4))
# 自定义取前K个最大值,可修改为3、10等符合列数的数值
K <- 2
# 核心计算逻辑
result <- t(apply(DF, 1, function(x) colnames(DF)[order(-x)][1:K]))
rownames(result) <- 1:nrow(result)

运行后打印result即可得到预期输出:

[,1] [,2]
1 "V3" "V2"
2 "V1" "V3"
3 "V2" "V3"

tidyverse风格实现

如果习惯使用tidyverse生态的语法,可以用以下代码:

library(tidyverse)
DF <- data.frame(V1=c(2,8,1),V2=c(7,3,5),V3=c(9,6,4))
K <- 2
result <- DF |>
  rownames_to_column("row_id") |>
  pivot_longer(-row_id) |>
  group_by(row_id) |>
  slice_max(order_by = value, n = K, with_ties = FALSE) |>
  mutate(rank = row_number()) |>
  pivot_wider(id_cols = row_id, names_from = rank, values_from = name) |>
  ungroup() |>
  select(-row_id) |>
  as.matrix()
rownames(result) <- 1:nrow(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:54:02