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