From tplate at acm.org  Mon Feb 25 07:24:43 2008
From: tplate at acm.org (Tony Plate)
Date: Sun, 24 Feb 2008 23:24:43 -0700
Subject: [Rd] Aliasing a function
In-Reply-To: <f8e6ff050802231641w6435b514i6c50c6448d72e531@mail.gmail.com>
References: <f8e6ff050802231440xcbe8597yf99b2fb83e9c2ca3@mail.gmail.com>	<000001c87674$4cd1a230$e674e690$@ca>	<971536df0802231552r3295c86n95cd5322aaa18d3b@mail.gmail.com>
	<f8e6ff050802231641w6435b514i6c50c6448d72e531@mail.gmail.com>
Message-ID: <47C25F2B.7020704@acm.org>

Maybe something like this? (though it seems like it might be more 
straightforward to do this sort of thing by text-processing a source 
file then source'ing it in R).

 > f <- function(a, b, c) c(a=a,b=b,c=c)
 > attr(f, "source") <- NULL
 > f
function (a, b, c)
c(a = a, b = b, c = c)
 > g1 <- f
 > ff <- formals(f)
 > argtrans <- c(a="d", b="e", c="f")
 > names(ff) <- argtrans
 > g2 <- as.function(c(ff, as.call(c(list(as.name("f")), 
lapply(argtrans, as.name)))))
 > g2
function (d, e, f)
f(a = d, b = e, c = f)
 > f(1,2,3)
a b c
1 2 3
 > g1(a=1,b=2,c=3)
a b c
1 2 3
 > g2(d=1,e=2,f=3)
a b c
1 2 3
 >

-- Tony Plate


hadley wickham wrote:
> On Sat, Feb 23, 2008 at 5:52 PM, Gabor Grothendieck
> <ggrothendieck at gmail.com> wrote:
>   
>> I assume he wants to be able to change the
>>  formals although its confusing since the example
>>  uses the same formals in both cases.
>>     
>
> Yes, that was an important point that I forgot to mention!  Thanks for
> the pointer to formals but it doesn't work in this case:
>
> function (a = 1, b = 2, c = 3)
> g(...)
>   
>> f(c=5)
>>     
> Error in f(c = 5) : '...' used in an incorrect context
>
> Hadley
>
>
>



[Rd] Aliasing a function
Tony Plate