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.