Как я могу записать имя переменной, которую еще нужно присвоить в R? - PullRequest
0 голосов
/ 29 мая 2020

Примечание: это отдельный от, хотя, возможно, аналогичный трюк с заменой получения имени переданного аргумента.

Рассмотрим следующую ситуацию: у меня есть некоторая функция вызывается, а возвращаемое значение должно быть присвоено некоторой переменной, например x. Как я могу указать внутри функции, что имя, которое будет присвоено возвращаемому значению, будет x, после вызова и назначения функции?

Например:

nameCapture <- function() {
    # arbitrary code
    captureVarName()
    }

x <- nameCapture()
x
## should return some reference to the name "x"

Что в R ближайшая аппроксимация captureVarName(), указанная в примере? Моя интуиция подсказывала, что в стеке вызовов будет что-то связанное с assign(), где x будет аргументом и может быть извлечено, но sys.call() ничего подобного не дало; происходит ли это затем внутри, и если да, то какой разумный способ достичь чего-то вроде captureVarName()?

Я полагаю, что это будет действовать аналогично тому, как работает следующее, но без assign(), используя вместо этого оператор <-:

nameCapture <- function() sys.call(1)[[2]]
assign("x", nameCapture())
x
# [1] "x"
...