В R мы можем ссылаться на элементы, созданные в этом же списке, например:
list(a = a <- 1, b = a)
Мне интересно, если есть способ написать функцию, которая заменяет a = a <- 1
. То есть, если в R возможно что-то вроде
`%=%` <- function(x,y) {
envir <- environment()
char_x <- deparse(substitute(x))
assign(char_x, y, parent.env(envir))
unlist(lapply(setNames(seq_along(x),char_x), function(T) y))
}
# does not work
list(a%=%1, b=a)
(т.е. возвращает приведенный выше список)? объект языка, который сохраняет все аспекты списка ручного кодирования? (в частности, присваивает атрибуту имен списка левую часть элемента языка).
Мне кажется, что ниже показано, что такое решение безнадежно.
my_call <- do.call(substitute, list(expr(expr = {x = y}), list(x=quote(a), y=1)))
equals <- languageEl(my_call, which = 1)
str(equals)
do.call(list, list(equals))