[R] Extracting the name of a function (inverse of match.fun("myFun"))

William Dunlap wdunlap at tibco.com
Thu Aug 30 01:14:09 CEST 2012


deparse(substitute(fnc)) will get you part way there.

myFunc <- function(x) x + 1
applyFunc <- function(fnc, x) {
    cat("fnc is", deparse(substitute(fnc)), "\n")
    fnc <- match.fun(fnc)
    fnc(x)
}

> applyFunc(myFunc, 1:3)
fnc is myFunc
[1] 2 3 4
> applyFunc(function(x)x*10, 1:3)
fnc is function(x) x * 10
[1] 10 20 30
> applyFunc("myFunc", 1:3)
fnc is "myFunc"
[1] 2 3 4

I like to let the user override what substitute might say by
making a new argument out of it:
> applyFunc(function(x)x*10, 1:3)
fnc is function(x) x * 10
[1] 10 20 30
> applyFunc(function(x)x*10, 1:3, fncString="Times 10")
fnc is Times 10
[1] 10 20 30
This makes is easier to call your function from another one - you
can pass the fncString down through a chain of calls.

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com


> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf
> Of Peter Langfelder
> Sent: Wednesday, August 29, 2012 4:00 PM
> To: r-help
> Subject: Re: [R] Extracting the name of a function (inverse of match.fun("myFun"))
> 
> On Wed, Aug 29, 2012 at 3:36 PM, Peter Langfelder
> <peter.langfelder at gmail.com> wrote:
> > Hi all,
> >
> > is there a way to extract the name of a function, i.e. do the reverse
> > of match.fun applied to a character string? I would like to print out
> > the name of a function supplied to another function as an argument.
> >
> > For example:
> >
> > myFunc = function(x) { x+1 }
> >
> > applyFunc = function(fnc, x)
> > {
> >   fnc = match.fun(fnc)
> >   fnc(x)
> > }
> >
> > Is there a way to obtain "myFunc" from the argument fnc in applyFnc
> > the following call is issued?
> >
> > applyFnc(myFunc, 1)
> 
> ...or am I missing the basic fact that since arguments to functions in
> R are passed by copy, the name is lost/meaningless?
> 
> Thanks,
> 
> Peter
> 
> ______________________________________________
> R-help at 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.




More information about the R-help mailing list