Hi, I can get from a string to a function with this name:>f1 <- function(x){ mean(x) }>do.call("f1",list{1:4}) >get("f1")etc... But how do I get from a function to its name?>funcVec <- c(f1,median)>funcVec[[1]] function(x){ mean(x) }> str(funcVec)List of 2 $ :function (x) ..- attr(*, "source")= chr "function(x){ mean(x) }" $ :function (x, ...)> deparse(funcVec[1])[1] "list(function (x) " "{" " mean(x)" [4] "})" thank you very much ido
On Mar 2, 2007, at 9:42 AM, Ido M. Tamir wrote:> Hi, > > I can get from a string to a function with this name: > >> f1 <- function(x){ mean(x) } > >> do.call("f1",list{1:4}) >> get("f1") > etc... > > But how do I get from a function to its name? > >> funcVec <- c(f1,median) > >> funcVec > [[1]] > function(x){ mean(x) }I suppose you could do: "funcVec" but that's probably not what you want ;). Can you do this with any object in R? In what situation will you be wanting this name? I mean, how would you be given this object, but not know its name in advance? If it is passed as an argument in a function or something, then what would you consider to be its name? I.e. I don't really see where you would reasonably want to do something like this, without there being another way around it. Btw, perhaps this does what you want: as.character(quote(f)) Haris Skiadas Department of Mathematics and Computer Science Hanover College
On Fri, Mar 02, 2007 at 03:42:46PM +0100, Ido M. Tamir wrote:> Hi, > > I can get from a string to a function with this name: > > >f1 <- function(x){ mean(x) } > > >do.call("f1",list{1:4}) > >get("f1") > etc... > > But how do I get from a function to its name? > > >funcVec <- c(f1,median) > > >funcVec > [[1]] > function(x){ mean(x) } > > str(funcVec) > List of 2 > $ :function (x) > ..- attr(*, "source")= chr "function(x){ mean(x) }" > $ :function (x, ...) > > deparse(funcVec[1]) > [1] "list(function (x) " "{" " mean(x)" > [4] "})" >for any symbol/name deparse(substitute(f1)) yields the string representation, but this won't give you "f1" for deparse(substitute(funcVec[1])). but rather the string "funcVec[1]". if you actually want to access funcVec components via strings denoting the components, maybe you simply could use funcVec <- list(f1 = f1, median = median) and access these via funcVec[["f1"]] which would enable using a string variable holding the name: dum = "f1" funcVec[[dum]] hth joerg
Charilaos Skiadas wrote:> On Mar 2, 2007, at 9:42 AM, Ido M. Tamir wrote: >> >> But how do I get from a function to its name? > > Can you do this with any object in R? > In what situation will you be wanting this name? I mean, how would > you be given this object, but not know its name in advance? If it is > passed as an argument in a function or something, then what would you > consider to be its name? > I.e. I don't really see where you would reasonably want to do > something like this, without there being another way around it. >I wanted to pass a vector of functions as an argument to a function to do some calculations and put the results in a list where each list entry has the "name" of the function. I thought I could either pass a vector of function names as character, then retrieve the functions etc... Or do the opposite, pass the functions and then retrieve the names, but this seems not to be possible it occurred to me, hence my question. thanks ido