>我有一个这样的数据帧:
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))