Bak*_*urg 0 evaluation scope r
这是在 R 中创建作用域表达式的合适方法,即封装命令,其变量在评估后被消除。
我现在使用的方式涉及使用with():
> with(data.frame(), {foo <- 5; bar <- 6; foo + bar})
[1] 11
> foo
Error: object 'foo' not found
Run Code Online (Sandbox Code Playgroud)
但这显然是一个黑客。
(顺便说一句,如果您传递c()而不是data.frame()to with(),则新变量实际上最终会出现在父环境中;不知道为什么)
local({foo <- 5; bar <- 6; foo + bar})
或者
local({foo <- 5
bar <- 6
foo + bar})
来自?local(我的重点)
local 计算本地环境中的表达式。除了它的默认参数创建一个新的空环境之外,它与 evalq 等效。这对于创建匿名递归函数和作为一种有限的命名空间特性很有用,因为在环境中定义的变量从外部是不可见的。
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |