[R] partial evaluation of a function with several arguments
    Gabor Grothendieck 
    ggrothendieck at gmail.com
       
    Tue Feb  8 14:15:57 CET 2011
    
    
  
On Mon, Feb 7, 2011 at 11:33 PM, Martin Spindler <Martin.Spindler at gmx.de> wrote:
> Dear all,
>
> I have the following problem:
>
> add <- function(x,y) {x+y}
>
> What is the easiest / most elegant way to create a new function (e.g. with the name "addev") that sets the second argument of the function "add" to a fixed value (e.g. y=3), i.e. addev <- add(x,3). But this does not work.
>
> Thank you for your efforts in advance!
>
The Defaults package can do that:
> library(Defaults)
>
> add <- function(x,y) {x+y}
> setDefaults(add, y=3)
>
> add(1)
[1] 4
We can look at what has happened to add.  Functions have a source
attribute that show the source text of the function but that text is
not changed by setDefaults so we need to remove it to be sure we are
looking at the actual function and not the source text:
> attr(add, "source") <- NULL
> add
function (x, y)
{
    if (exists(".importDefaults"))
        .importDefaults(calling.fun = "add")
    x + y
}
>
-- 
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com
    
    
More information about the R-help
mailing list