Попытка войти в логику R... что такое "лучший" способ распаковать (на LHS) результаты от функции, возвращающей несколько значений?
Я не могу сделать это, по-видимому:
R> functionReturningTwoValues <- function() { return(c(1, 2)) }
R> functionReturningTwoValues()
[1] 1 2
R> a, b <- functionReturningTwoValues()
Error: unexpected ',' in "a,"
R> c(a, b) <- functionReturningTwoValues()
Error in c(a, b) <- functionReturningTwoValues() : object 'a' not found
Должен ли я действительно делать следующее?
R> r <- functionReturningTwoValues()
R> a <- r[1]; b <- r[2]
или программист R написал бы что-то вроде этого:
R> functionReturningTwoValues <- function() {return(list(first=1, second=2))}
R> r <- functionReturningTwoValues()
R> r$first
[1] 1
R> r$second
[1] 2
--- отредактирован для ответа на вопросы Шейна ---
Мне не нужны имена для частей результата. Я применяю одну агрегированную функцию к первому компоненту, а другой - ко второму компоненту (min
и max
). Если бы это была одна и та же функция для обоих компонентов, мне не нужно было бы их разделять).