R语言
bindenv
位于 base
包(package)。 说明
这些函数代表用于调整环境和环境内绑定的接口。它们允许锁定环境以及单独的绑定,以及将变量链接到函数。
用法
lockEnvironment(env, bindings = FALSE)
environmentIsLocked(env)
lockBinding(sym, env)
unlockBinding(sym, env)
bindingIsLocked(sym, env)
makeActiveBinding(sym, fun, env)
bindingIsActive(sym, env)
activeBindingFunction(sym, env)
参数
env |
一个环境。 |
bindings |
逻辑指定是否应锁定绑定。 |
sym |
名称对象或字符串。 |
fun |
带有零个或一个参数的函数。 |
细节
函数 lockEnvironment
锁定其环境参数。锁定环境可以防止在环境中添加或删除变量绑定。除非绑定已被锁定,否则仍然可以更改变量的值。具有命名空间的包的命名空间环境在加载时被锁定。
lockBinding
锁定指定环境中的各个绑定。锁定绑定的值无法更改。除非环境被锁定,否则可以从环境中删除锁定的绑定。
makeActiveBinding
安装fun
在环境中env
从而得到的值sym
调用fun
不带参数,并分配给sym
调用fun
带有一个参数,即要分配的值。这允许实现诸如链接到的 C 变量之类的东西R变量和链接到数据库的变量,用于实现setRefClass
。它对于制作某些系统全局变量的线程安全版本也可能很有用。当前活动绑定在软件包安装过程中不会保留,但可以在以下位置创建:.onLoad
.
值
bindingIsLocked
和 environmentIsLocked
返回长度为 1 的逻辑向量。其余函数不可见地返回 NULL
。
例子
# locking environments
e <- new.env()
assign("x", 1, envir = e)
get("x", envir = e)
lockEnvironment(e)
get("x", envir = e)
assign("x", 2, envir = e)
try(assign("y", 2, envir = e)) # error
# locking bindings
e <- new.env()
assign("x", 1, envir = e)
get("x", envir = e)
lockBinding("x", e)
try(assign("x", 2, envir = e)) # error
unlockBinding("x", e)
assign("x", 2, envir = e)
get("x", envir = e)
# active bindings
f <- local( {
x <- 1
function(v) {
if (missing(v))
cat("get\n")
else {
cat("set\n")
x <<- v
}
x
}
})
makeActiveBinding("fred", f, .GlobalEnv)
bindingIsActive("fred", .GlobalEnv)
fred
fred <- 2
fred
作者
Luke Tierney
相关用法
- R bincode Bin 数值向量
- R bitwise 按位逻辑运算
- R basename 操作文件路径
- R body 访问和操作函数体
- R backsolve 求解上三角系统或下三角系统
- R bquote 表达式中的部分替换
- R builtins 返回所有内置对象的名称
- R balancePOSIXlt 平衡“不规则”和超出范围的 POSIXlt 日期时间
- R by 将函数应用于按因子拆分的 DataFrame
- R browserText 检索浏览器调用提供的值的函数
- R base-defunct 包库中已失效的函数
- R browser 环境浏览器
- R file.path 构造文件路径
- R grep 模式匹配和替换
- R getwd 获取或设置工作目录
- R vector 向量 - 创建、强制等
- R lapply 对列表或向量应用函数
- R dump R 对象的文本表示
- R Sys.getenv 获取环境变量
- R rank 样本排名
- R getDLLRegisteredRoutines DLL 中 C/Fortran 例程的反射信息
- R pushBack 将文本推回连接
- R strsplit 分割字符向量的元素
- R seq.Date 生成规则的日期序列
- R invisible 将打印模式更改为不可见
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Binding and Environment Locking, Active Bindings。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。