在C和变体中,当你有这样的东西时:
{
tmp1 <- 5
tmp2 <- 2
print(tmp1 + tmp2)
}
Run Code Online (Sandbox Code Playgroud)
将打印一个7,但是一旦范围结束,tmp1和tmp2变量将从堆栈中删除}.我有时想在R中使用类似的功能,这样我就不必在某个时间点之后清理(很多)临时变量.
在R中使这个工作的一种方法是这样的:
(function(){
tmp1 <- 5
tmp2 <- 2
print(tmp1 + tmp2)
})()
Run Code Online (Sandbox Code Playgroud)
现在看起来似乎有点hackish - 或者它可能只是我.
在R中有没有更好或更简洁(即更易阅读)的方法?
您可能希望local在基础R中使用此目的:
local({
tmp1 <- 5
tmp2 <- 2
print(tmp1 + tmp2)
})
Run Code Online (Sandbox Code Playgroud)
因此local,只要保留范围,任何在范围内创建的变量都将消失.
来自?local:
local评估本地环境中的表达式.
有关?local详细信息,请参阅
另外,with(在评论中由@Rich Scriven建议)也可以在基数R中使用,其中1只有一个虚拟数据:
with(1, {
tmp1 <- 5
tmp2 <- 2
print(tmp1 + tmp2)
})
Run Code Online (Sandbox Code Playgroud)
来自?with:
with是一个泛型函数,用于在由数据构造的本地环境中计算expr.