r语言 - 查找每行和报表列名称中的最大值



>我有一个这样的数据帧:

 V1      V2     V3    
 0.4    -0.9    0.6
 0.8    -0.2    0.4
-0.6     0.1    0.8

我想获取最大值(符号无关紧要(,最后打印列中具有最高值的列的名称。

我想拥有这个:

 V1      V2     V3     MAX 
 0.4    -0.9    0.6    V2
 0.8    -0.2    0.4    V1
-0.6     0.1    0.8    V3

有什么想法吗?

我们可以对数据帧的绝对值使用max.col

df$MAX <- names(df)[max.col(abs(df))]
df
#    V1   V2  V3 MAX
#1  0.4 -0.9 0.6  V2
#2  0.8 -0.2 0.4  V1
#3 -0.6  0.1 0.8  V3

同样,我们也可以逐行使用apply解决方案来获取每一行的最大值

names(df)[apply(abs(df), 1, which.max)]
#[1] "V2" "V1" "V3"

数据

df <- structure(list(V1 = c(0.4, 0.8, -0.6), V2 = c(-0.9, -0.2, 0.1
), V3 = c(0.6, 0.4, 0.8)), class = "data.frame", row.names = c(NA, 
-3L))

最新更新