0
有一种方法中的R禁用词法作用域?我想阻止一个函数使用它的任何父/祖先环境。期望的行为是一个错误以下(找不到x
)。忽略内部功能父/祖先环境(禁用词法作用域)
x <- 1
f <- function()
eval(parse(text = "x"),
envir = new.env(),
enclos = new.env())
f() # returns 1
有一种方法中的R禁用词法作用域?我想阻止一个函数使用它的任何父/祖先环境。期望的行为是一个错误以下(找不到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
这不“禁用”词汇范围这么多,因为它改变了搜索跳过全球环境。
如果需要,您可以使用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