[R] bug: Editing function formals deletes the environment
Alex Brown
alex at transitive.com
Fri Oct 13 12:19:31 CEST 2006
First, here's the specific bug I have. Later I'll say why I care.
> ls(zappo)
Error in try(name) : object "zappo" not found
# good.
> f = function(zappo) { function(y) zappo + y }
> g = f(1)
> g(1)
[1] 2
> formals(g)
$y
> formals(g)$y
> formals(g)$y = 2
> g
function (y = 2)
zappo + y
> g(1)
Error in g(1) : object "zappo" not found
# looks like formals strips the environment off stuff.
anything I can do about this?
-Alex
Original question:
I'm trying to change the behaviour of a package, to simplify the
interface.
I'd rather not change the package, although I could.
There's a hidden function whose defaults I wish to change.
I'm using R 2.3.1 for macosX. Upgrading is not an option.
This is what I do:
library(R2HTML)
# get the function to modify
x = getFromNamespace("HTML.data.frame", "R2HTML")
# change the default for an argument
formals(x)["Border"]=list(NULL)
# put the function back
assignInNamespace("HTML.data.frame", x, "R2HTML")
#test the function:
HTML(data.frame(1:2), file=stdout())
Error: could not find function "HTMLReplaceNA"
# what seems to be happening is that the formals function is
stripping the namespace off the variable x. I can't tell why.
More information about the R-help
mailing list