Skip to content

Retrieving function name

3 messages · Tom McCallum, Dimitris Rizopoulos, Peter Dalgaard

#
Hi,

Does anyone know how I can retrieve a function name, for example

If I have a function f as follows:

f <- function( myfunc ) {
	print( name_of(myfunc) );
}

I want to know what I should have as "name_of" such that I could call this  
with :
	f( median )
and it would print "median"

or f( my_function_name ) and it would print "m_function_name".

So far all I can get is the function definition that myfunc points to.

I thought the structure command might do it but this also just gives back  
the function definition and not the original name.

Any suggestions?

Tom
#
probably you're looking for:

f <- function(FUN, x){
    list(funName = deparse(substitute(FUN)), value = FUN(x))
}

f(mean, rnorm(10))
f(median, rnorm(10))


I hope it helps.

Best,
Dimitris

----
Dimitris Rizopoulos
Ph.D. Student
Biostatistical Centre
School of Public Health
Catholic University of Leuven

Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/(0)16/336899
Fax: +32/(0)16/337015
Web: http://med.kuleuven.be/biostat/
     http://www.student.kuleuven.be/~m0390867/dimitris.htm


----- Original Message ----- 
From: "Tom McCallum" <tom.mccallum at levelelimited.com>
To: <r-devel at r-project.org>
Sent: Thursday, November 09, 2006 4:28 PM
Subject: [Rd] Retrieving function name
Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
#
"Tom McCallum" <tom.mccallum at levelelimited.com> writes:
Depending on what you really want, this is either impossible or
trivial. The trivial version is 

f <- function(x) print(deparse(substitute(x)))

and the impossible one is to get something that prints "mean" if you
do something like

x<-1
f(switch(x, 1 = mean, 2 = median, 3 = sd, 4 = IQR))

or 

g <- function(foo) f(foo)
g(mean)

or indeed does anything sensible with

f(function(x,y) x*y)


Thing is, functions do not "have names", they can be anonymous or
assigned to multiple names, or be passed as arguments.