这是一个玩具示例:
{
tmp_a <- a # a is some variable from Global Environment
# do something with tmp_a
a <<- tmp_a
}
Run Code Online (Sandbox Code Playgroud)
我想要的本质上是一个没有函数头的函数。我希望在程序退出该块后删除该块内创建的所有临时变量。我不想在函数中执行此操作,因为该块太长,并且它访问许多全局变量。将所有变量传递给函数可能会慢得多。
我也尝试过local(),但这样它就不能再访问全局变量了。
local可以访问其外部的变量。下面的a内部local来自全局环境,tmp_a当局部退出时被破坏。
a <- 1
a <- local({
tmp_a <- a
tmp_a <- tmp_a + 1
tmp_a
})
a
## [1] 2
exists("tmp_a")
## [1] FALSE
Run Code Online (Sandbox Code Playgroud)
请注意,这会以相同的方式工作,因此没有真正的原因您不能使用函数,尽管local在这里似乎更合适。
a <- 1
f <- function() {
tmp_a <- a
tmp_a <- tmp_a + 1
tmp_a
}
a <- f()
a
## [1] 2
exists("tmp_a")
## [1] FALSE
Run Code Online (Sandbox Code Playgroud)