On Mon, Feb 7, 2011 at 11:33 PM, Martin Spindler <martin.spind...@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

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to