[R] provide extra variables to environment in call

Liaw, Andy andy_liaw at merck.com
Fri Oct 8 15:54:08 CEST 2004


Not an direct answer to your question, but why not do something like:

> f <- function() x + 1
> x <- 10
> f()
[1] 11
> g <- function(x, ...) {
+     my.f <- f
+     formals(my.f) <- c(list(x=NULL), formals(f))
+     my.f(x, ...)
+ }
> g(5)
[1] 6

Andy

> From: Khamenia, Valery
> 
> 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' ?
> 
> I see that i've missed something in docs for 
> eval/environments and related.
> 
> Thank you in advance.
> --
> Valery.
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! 
> http://www.R-project.org/posting-guide.html
> 
>




More information about the R-help mailing list