1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
## Convert a byte-compiled function to an interpreted-code function
unByteCode <- function(fun)
{
FUN <- eval(parse(text=deparse(fun)))
environment(FUN) <- environment(fun)
FUN
}
## Replace function definition inside of a locked environment **HACK**
assignEdgewise <- function(name, env, value)
{
unlockBinding(name, env=env)
assign( name, envir=env, value=value)
lockBinding(name, env=env)
invisible(value)
}
## Replace byte-compiled function in a locked environment with an
## interpreted-code function
unByteCodeAssign <- function(fun)
{
name <- gsub('^.*::+','', deparse(substitute(fun)))
FUN <- unByteCode(fun)
retval <- assignEdgewise(name=name,
env=environment(FUN),
value=FUN
)
invisible(retval)
}
|