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