(Oops, that was of course intended for Rolf, not Baptiste) Peter Dalgaard wrote: > baptiste auguie wrote: >> Not answering your question, but just pointing out the example of >> >> base::.NotYetImplemented() >> >> essentially doing the same thing. >> >> Best, >> >> baptiste >> >> >> 2009/9/28 Rolf Turner <r.tur...@auckland.ac.nz>: >>> I have vague recollections of seeing this question discussed on r-help >>> previously, but I can't find the relevant postings. >>> >>> I want to determine (from within a given function) the name of the function >>> calling that given function. >>> >>> E.g. if I have a function foo() which calls a function bar(), and also >>> a function clyde() which calls bar(), I want to have, in the code of bar(), >>> an instruction which will return the character string "foo" if bar() was >>> called from foo() and the string "clyde" if bar() was called from clyde(). >>> >>> Without really understanding what I'm doing I cobbled together the >>> following: >>> >>> fname <- as.character(sys.call(-1))[1] >>> >>> This ***seems*** to work, at least in simple test cases. >>> >>> But is it reliably robust? Are there traps for young players that I am >>> not seeing? >>> >>> My ``solution'' returns NA as the value of fname if bar() is called from the >>> command line, rather than being called by foo() or clyde(). This is >>> acceptable. >>> I think .... >>> >>> Any avuncular advice from those younger and wiser than myself? :-) >>> >>> cheers, >>> >>> Rolf Turner >>> > > (How old are you? Surely you are aware that avuncular advice usually > comes from your parents' siblings and their spouses.) > > I'd maybe be more inclined to use something like > deparse(sys.call(-1)[[1]]) but there's no clear benefit. > > The main trap would be that the first element of the call is not > necessarily a name. Consider > >> (function(x)deparse(sys.call()[[1]]))(x=2) > [1] "(function(x) deparse(sys.call()[[1]]))" >> (function(x)as.character(sys.call()[1]))(x=2) > [1] "(function(x) as.character(sys.call()[1]))" > > and notice that in fact the function bing called may not even _have_ a name. >
-- O__ ---- Peter Dalgaard Ă˜ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalga...@biostat.ku.dk) FAX: (+45) 35327907 ______________________________________________ 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.