【问题标题】:How to unlock environment in R?如何解锁R中的环境?
【发布时间】:2013-10-02 08:05:00
【问题描述】:

在 R 中使用绑定和环境调整,我们有这 3 个功能:

  1. lockEnvironment(env) 锁定 env,因此您无法向 env 添加新符号。
  2. lockBinding(sym, env) 将 sym 锁定在 env 中,因此您无法修改它
  3. unlockBinding(sym, env)放松后一个锁。

但是我怎样才能解锁环境呢?也许我错过了一些东西,但看起来 R 没有公开 unlockEnvironment 函数或等效机制来解锁 env ?这有什么设计原因吗?

这里有一个如何使用这个函数的例子:

e <- new.env()
lockEnvironment(e)
get("x",e)
assign("x",2,envir=e)
lockBinding("x", e)
get("x",e)
unlockBinding("x", e)
assign("x",3,envir=e)

## how to relese e lock?
unlockEnvironment(e) ## the function doesn't exist

【问题讨论】:

标签: r locking


【解决方案1】:

我认为你能做的最好的就是创造一个新的解锁环境。您可以复制所有字段,也可以将现有字段作为新字段的父字段。这意味着所有现有的变量都会被继承。

unlockEnvironment <- function (env) {
  return (new.env(parent=env))
}

e <- unlockEnvironment(e)

【讨论】:

    猜你喜欢
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    • 2020-02-03
    相关资源
    最近更新 更多