忽略 parent/ancestor 函数内的环境(禁用词法范围)
ignore parent/ancestor environments inside function (disable lexical scoping)
有没有办法在 R 中禁用词法范围?我想阻止函数使用它的任何 parent/ancestor 环境。所需的行为是下面的错误(x
未找到)。
x <- 1
f <- function()
eval(parse(text = "x"),
envir = new.env(),
enclos = new.env())
f() # returns 1
您可以将函数的环境设置为baseenv()
,不会搜索全局环境
x <- 1
f <- function() return(x);
environment(f) <- baseenv()
f()
# Error in f() : object 'x' not found
这并没有 "disable" 词法范围,因为它改变了搜索以跳过全局环境。
如果需要,您可以将 baseenv()
与 eval(envir=)
或 new.env(parent=)
参数一起使用。
x <- 1
f <- function()
eval(parse(text = "x"),
envir = baseenv())
f()
# Error in eval(expr, envir, enclos) : object 'x' not found
有没有办法在 R 中禁用词法范围?我想阻止函数使用它的任何 parent/ancestor 环境。所需的行为是下面的错误(x
未找到)。
x <- 1
f <- function()
eval(parse(text = "x"),
envir = new.env(),
enclos = new.env())
f() # returns 1
您可以将函数的环境设置为baseenv()
,不会搜索全局环境
x <- 1
f <- function() return(x);
environment(f) <- baseenv()
f()
# Error in f() : object 'x' not found
这并没有 "disable" 词法范围,因为它改变了搜索以跳过全局环境。
如果需要,您可以将 baseenv()
与 eval(envir=)
或 new.env(parent=)
参数一起使用。
x <- 1
f <- function()
eval(parse(text = "x"),
envir = baseenv())
f()
# Error in eval(expr, envir, enclos) : object 'x' not found