Непонятное поведение `replace` в R

Ребята, это сводит меня с ума.

Это работает, как ожидалось:

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 получает в руки исходную форму выражения?

6
задан VitoshKa 2 November 2010 в 14:48
поделиться