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

Reply via email to