Ребята, это сводит меня с ума.
Это работает, как ожидалось:
eobj <- substitute(obj <- list(a, b), list(a = 32, b = 33))
eval(eobj)
obj
[[1]]
[1] 32
[[2]]
[1] 33
Теперь попробуйте следующее:
efun <- substitute(fun <- function() a+ b, list(a = 32, b = 33))
str(efun)
# language fun <- function() 32 + 33
eval(efun)
fun
# function() a+ b
Что здесь происходит? Как, черт возьми, eval
получает в руки исходную форму выражения?