如何从更高的环境中访问变量

时间:2018-05-13 09:28:20

标签: r

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

1 个答案:

答案 0 :(得分:2)

这取自#!/bin/sh set +e exec command_that_will_fail if [ $? -eq 1 ]; then echo "command failed, running another command" fi 例子:

?eval

您似乎需要专门定义父环境。