для скрытых процессов в более крупном приложении R Shiny я хочу восстановить имя, которое назначает пользователь.
Например, если пользователь привязывает значение 1 к имени x (x <- 1
), то я хочу извлечь имя «x» из стека вызовов. После некоторых исследований по оценке функций и средам стека вызовов в R ( здесь , здесь , здесь и? Sys.parent), я смог поставить вместе частичное решение. Он возвращает объект класса вызова, которым можно манипулировать с помощью пакета rlang.
f <- function() sys.call(which = 1)
(assign("x", f()))
Несмотря на это, как оператор присваивания x <- 1
(возвращает f ()), так и его префиксная форма `<-`("x", 1)
(возвращает 1) нарушают мое решение. Я нахожу это озадачивающим, потому что все три функции (<-
, `<-`()
и assign()
) имеют похожие абстрактные синтаксические деревья. Во всяком случае, пользователи моего кода должны следовать обычным шаблонам присваивания и вообще ничего не замечать.
Подсказки или указатели на дополнительные ресурсы приветствуются.
Спасибо!