【发布时间】:2017-07-13 06:37:33
【问题描述】:
假设我有一个如下所示的数据框,并且想要在每一行中取最大值并将其关联的列名放入一个新向量(而不是值本身),我该怎么做?
df <- data.frame(matrix(rnorm(50, 20), 5))
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1 18.49755 18.98823 18.53194 18.86478 20.74333 18.04460 21.08717 21.75072 18.05813 19.08402
2 20.44626 20.07205 19.36755 17.14943 18.58396 20.76463 20.23776 18.90171 18.99182 20.51338
3 20.27142 18.74448 21.42953 20.13568 20.40065 22.26788 19.30967 20.51772 19.20067 19.75371
4 20.61600 21.27852 18.54137 20.84269 20.27767 20.70583 21.33051 20.03136 20.60405 21.24672
5 19.64165 21.20197 20.06732 19.59529 20.48761 19.83571 19.80155 21.02669 20.77574 21.21862
我试过了
results <- apply(df, 1, max)
这给了我最高的值,但我更感兴趣的是与添加到结果向量中的最高值相关的列名,而不是值本身。
因此,我将有一个“获胜”列名的向量,而不是按行排列的 5 个最高值的向量,例如
result <- c("X1", "X3", "X2", "X1", "X9")
谢谢。
【问题讨论】:
-
这是
names(df)[max.col(df)]...和一个副本。
标签: r