On Fri, 8 Oct 2004, Khamenia, Valery wrote:
Hi all,
Situation:
there is a function `f' already defined by someone and provided in package. `f' looks like that:
f <- function() { x+1 }
i.e. `f' is not closed i.r.t. term `x'
now I have my own function `g', where I'd like to override variable `x' while calling `f':
x <- "dummy gloabal value"
g <- function() { x <- 42 eval(f(), environment()) # how to make loacl `x' visible in `f'? }
g() # => Error in x + 1 : non-numeric argument to binary operator
Here comes the question:
What is the right way to call `f' in order to override global value of `x' with the local value defined within of function `g' ?
This is messy because f() should not have been defined that way.
You can't do it without modifying (a copy of) f().
If the package has a namespace, so that you can't override the definition of f() it may be impossible.
If you can override the definition of f() you can do something like
environment(f)<-environment()
inside g(). On the other hand, you could then just replace the definition of f() with one that takes x as an argument.
-thomas
______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html