Как отметил @ G5W, возраст в третьей строке имеет не самое высокое значение, а самое высокое абсолютное значение:
colnames(df)[max.col(abs(df[3, ]), ties.method = "first")]
Если вас действительно интересует самое высокое значение, то:
colnames(df)[max.col(df[3, ], ties.method = "first")]
Или, если вы предпочитаете решение tidyverse
, возвращается столбец с наибольшим абсолютным значением:
df %>%
rowid_to_column() %>%
filter(rowid == 3) %>%
gather(col, val, Weight:Height) %>%
filter(abs(val) == max(abs(val))) %>%
select(-rowid, -val)
Возвращается столбец с наибольшим значением:
df %>%
rowid_to_column() %>%
filter(rowid == 3) %>%
gather(col, val, Weight:Height) %>%
filter(val == max(val)) %>%
select(-rowid, -val)
Данные:
df <- read.table(text = " Weight Age Height
Cats -0.7289964 0.2194702 -2.4674780
Dogs 1.0889353 0.3167629 -0.9208548
Rats -0.6374692 -1.7249049 0.6567313
Mice -0.1348642 0.4507473 -1.7309010", header = TRUE)