Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to unlock environment in R?

Tags:

r

locking

Playing with Binding and Environment Adjustments in R , we have this 3 functions:

  1. lockEnvironment(env) locks env so you can't add a new symbol to env.
  2. lockBinding(sym, env) locks the sym within env so you can't modfiy it
  3. unlockBinding(sym, env) relax the latter lock.

But how can I Unlock the environment? Maybe I miss something but it looks like R don't expose an unlockEnvironment function or equivalent mechanism to unlock the env ? Is there some design reason to this?

Here an example of how to use this functions:

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
like image 285
agstudy Avatar asked Oct 02 '13 08:10

agstudy


1 Answers

I think the best you can do is make a new unlocked environment. You could either copy all the fields, or make the existing one a parent of the new one. That means all the existing variables get inherited.

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

e <- unlockEnvironment(e)
like image 179
Steve Pitchers Avatar answered Sep 18 '22 13:09

Steve Pitchers