【发布时间】:2017-06-06 11:45:40
【问题描述】:
在 C 和变体中,当你有这样的东西时:
{
tmp1 <- 5
tmp2 <- 2
print(tmp1 + tmp2)
}
将打印 7,但一旦范围 } 结束,tmp1 和 tmp2 变量将从堆栈中删除。我有时希望在 R 中具有类似的功能,这样我就不必在某个时间点之后清理(许多)临时变量。
在 R 中进行这项工作的一种方法如下:
(function(){
tmp1 <- 5
tmp2 <- 2
print(tmp1 + tmp2)
})()
现在这似乎有点骇人听闻——或者可能只是我。
在 R 中是否有更好或更简洁(即更具可读性)的方法来做到这一点?
【问题讨论】:
-
除了
local(),您还可以使用with()和一个虚拟变量-with(1, { tmp1 <- 5; tmp2 <- 2; print(tmp1 + tmp2) })。它还创建了一个本地环境。 -
@nicola,我一直在寻找一种在 R 中进行变量范围界定的方法,但从未找到这个问题的旧副本,它确实 99% 相同。所以我会留下这个作为搜索的替代品。