Re: [Rd] introspective capabilities
Duncan Murdoch murdoch.dun...@gmail.com writes: On 27/08/2010 7:52 AM, Christophe Rhodes wrote: Hi, Is there any way, from R code, to perform introspection as to where certain names acquired their values? There's the keep.source option to source() and the optional srcfile argument to parse() that tell R to keep this information. If you haven't changed the default getOption(keep.source) from TRUE, then source will default to keeping it, and you can find the original location of a function definition for function f by looking in attr(body(f), srcref). See ?srcref for the format; there aren't a lot of user-level utility functions for working with this. Thanks. This is enough for my immediate purposes: supporting single-keystroke (M-.) jumping to source locations of functions. For packages, the relevant option is keep.source.pkgs at the time the package is installed. Thank you. Is there anything like a cross-referencing database within R? The functionality I'm looking for here is to be able to name a function, and come back with a list of functions (or srcrefs) where that name is used. (I realise that this is not in general possible; just the lexically-apparent cases would be enough). Cheers, Christophe __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] introspective capabilities
On 01/09/2010 9:27 AM, Christophe Rhodes wrote: Duncan Murdoch murdoch.dun...@gmail.com writes: On 27/08/2010 7:52 AM, Christophe Rhodes wrote: Hi, Is there any way, from R code, to perform introspection as to where certain names acquired their values? There's the keep.source option to source() and the optional srcfile argument to parse() that tell R to keep this information. If you haven't changed the default getOption(keep.source) from TRUE, then source will default to keeping it, and you can find the original location of a function definition for function f by looking in attr(body(f), srcref). See ?srcref for the format; there aren't a lot of user-level utility functions for working with this. Thanks. This is enough for my immediate purposes: supporting single-keystroke (M-.) jumping to source locations of functions. For packages, the relevant option is keep.source.pkgs at the time the package is installed. Thank you. Is there anything like a cross-referencing database within R? The functionality I'm looking for here is to be able to name a function, and come back with a list of functions (or srcrefs) where that name is used. (I realise that this is not in general possible; just the lexically-apparent cases would be enough). There is no such database already built, but I imagine the functions in the codetools package could construct one. Duncan Murdoch __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] introspective capabilities
Hi Christophe You could also look at the 'foodweb' function in package 'mvbutils'-- and specifically 'callers.of'. It should do just what you want, though you do have to tell it which environments to search through. bye Mark -- Mark Bravington CSIRO Mathematical Information Sciences Marine Laboratory Castray Esplanade Hobart 7001 TAS ph (+61) 3 6232 5118 fax (+61) 3 6232 5012 mob (+61) 438 315 623 Christophe Rhodes wrote: Duncan Murdoch murdoch.dun...@gmail.com writes: On 27/08/2010 7:52 AM, Christophe Rhodes wrote: Hi, Is there any way, from R code, to perform introspection as to where certain names acquired their values? There's the keep.source option to source() and the optional srcfile argument to parse() that tell R to keep this information. If you haven't changed the default getOption(keep.source) from TRUE, then source will default to keeping it, and you can find the original location of a function definition for function f by looking in attr(body(f), srcref). See ?srcref for the format; there aren't a lot of user-level utility functions for working with this. Thanks. This is enough for my immediate purposes: supporting single-keystroke (M-.) jumping to source locations of functions. For packages, the relevant option is keep.source.pkgs at the time the package is installed. Thank you. Is there anything like a cross-referencing database within R? The functionality I'm looking for here is to be able to name a function, and come back with a list of functions (or srcrefs) where that name is used. (I realise that this is not in general possible; just the lexically-apparent cases would be enough). Cheers, Christophe __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] introspective capabilities
On 27/08/2010 7:52 AM, Christophe Rhodes wrote: Hi, Is there any way, from R code, to perform introspection as to where certain names acquired their values? The specific functionality I'm looking for in this case is to be able to request my editor to view the definition corresponding to a name in its original source location (presuming for the moment that that location exists). Other functionality that I'm looking for is to identify where in the current image a particular name is used -- what functions use the value bound to a particular name? The context for these questions, in case anyone is interested, is that I am usually a Common Lisp programmer, and my programming environment for that (SLIME) is what I'm used to. R is sufficiently close to CL (the discovery of withCallingHandlers/withRestarts was a pleasant surprise) that I decided to experiment with implementing a SLIME backend for R -- and enough of it seems to work that I'm motivated to make it more complete. (The current state of the project is summarised at http://common-lisp.net/~crhodes/swankr/). There's the keep.source option to source() and the optional srcfile argument to parse() that tell R to keep this information. If you haven't changed the default getOption(keep.source) from TRUE, then source will default to keeping it, and you can find the original location of a function definition for function f by looking in attr(body(f), srcref). See ?srcref for the format; there aren't a lot of user-level utility functions for working with this. For packages, the relevant option is keep.source.pkgs at the time the package is installed. Duncan Murdoch __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel