f <- function(x, y, z) {
lapply(as.list(match.call()[-1]), eval)
}
f(x=2, z=3)
Выходная информация соответствует ожидаемой:
$x
[1] 2
$z
[1] 3
Однако, когда эта функция помещается в другую, происходит сбой.
g <- function(a) {
f(x=a, z= 3)
}
g(2)
Сообщение об ошибке:
Error in FUN(X[[i]], ...) : object 'a' not found
Очевидно, что функция eval
выглядит только в родительской среде, а не в более высоких средах. В режиме отладки все работает как положено:
> g <- function(a) {
+ browser()
+ f(x=a, z= 3)
+ }
> g(2)
Called from: g(2)
Browse[1]> a
[1] 2