r получить имя переменной, которое имеет максимальное

Я некоторое время искал в Интернете, но не нашел ответов на этот конкретный вопрос. может быть, я не использую нужные ключевые слова... но если уже есть ветка по этому вопросу, пожалуйста, направьте меня туда!

так скажем, данные выглядят так:

a = 3 b = 5

теперь я хочу узнать, какой из них больше, поэтому я делаю:

max(a,b)

это вернет мне только «5», но я хочу, чтобы он вернул «b», я пытался использовать which (), но он продолжает говорить «что не логично», я также пробовал deparse (), но я получаю строку «5»

Спасибо за любую помощь заранее!


person alwaysaskingquestions    schedule 19.02.2016    source источник


Ответы (3)


спасибо andrewelamb за отличное начало ответа. я немного изменил код, чтобы получить правильный ответ, который я искал:

`a = 3
 b = 5
 v_name = ["a","b"]
 v_name[which.max(c(a,b))]`

надеюсь, что это поможет всем, у кого есть эта проблема, а также в будущем

person alwaysaskingquestions    schedule 20.02.2016

Базовый подход к получению имени переменной реализован как myfunc, все остальное кратко:

myfunc <- function(v1) {
  deparse(substitute(v1))
}
a=3
b=5
ifelse(max(a,b),myfunc(a),myfunc(b))
person John_West    schedule 19.02.2016
comment
какой интересный подход к этому. :) - person alwaysaskingquestions; 20.02.2016
comment
Однако для обоих подходов требуется один элемент для определения каждой переменной. Мой: myfunc(variable) (условный вызов функции), ваш: "variable" (в векторе) ;) - person John_West; 20.02.2016

person    schedule
comment
большое спасибо! одна вещь, которую я хотел бы отметить, это то, что a и b, переданные в вектор, должны быть строками. но при переходе в which.max() должны быть числа. - person alwaysaskingquestions; 20.02.2016
comment
Я неправильно понял, я думаю, что Джон понял это выше - person andrewelamb; 20.02.2016