2014-10-19 3 views
1

Мне нужно найти максимальное значение из списка переменных. Однако max() возвращает содержимое переменной вместо имени переменной. Есть ли способ получить имя вместо содержимого?R - Как заставить max() возвращать имена переменных вместо содержимого переменных?

Быстрый пример кода:

jan <- 0 
feb <- 0 
mar <- 0 

#for testing purposes - just select a random month and add 10 
s1 <- sample(1:3, 1) 
if (s1==1) { 
    jan <- jan + 10 
} 
if (s1==2) { 
    feb <- feb + 10 
} 
if (s1==3) { 
    mar <- mar + 10 
} 

final <- max(jan, feb, mar) 

final 

Результат от этого всегда будет 10. Это не полезно ... Есть ли способ, чтобы получить месяц/имя переменной вместо этого возвращается? (т. е. «jan» вместо «10»)

Спасибо!

+0

Я также попытался добавить метки к списку, но метки не переносятся с макс() – jdfinch3

+2

Вы можете назвать векторные элементы, чтобы начать с, например: 'ян < - c (jan = 0); feb <- c (feb = 0); mar <- c (mar = 0) ', а затем будет вызываться' final <- which.max (jan, feb, mar) '. Доступ с помощью 'names (final)'. – jbaums

+0

Благодарим за отзыв! – jdfinch3

ответ

4

Вы можете попробовать:

c("jan", "feb", "mar")[which.max(c(jan, feb, mar))] 
#[1] "jan" 
+0

Спасибо - это работает отлично. Я пробовал подмножество, но, видимо, что-то не так ... – jdfinch3

+0

@ jdfinch3 Рад, что он работает. Не могли бы вы показать код для подмножества в своем сообщении. – akrun

+0

Извините, он давно удален, так как он не работает. Я верю, что у меня был порядок назад. Благодарю. :) – jdfinch3

 Смежные вопросы

  • Нет связанных вопросов^_^