From csr21 at cantab.net  Wed Sep  1 15:27:01 2010
From: csr21 at cantab.net (Christophe Rhodes)
Date: Wed, 01 Sep 2010 14:27:01 +0100
Subject: [Rd] introspective capabilities
References: <87iq2ws25s.fsf@cantab.net> <4C7BD5BB.7050501@gmail.com>
Message-ID: <8762ypmw62.fsf@cantab.net>

Duncan Murdoch <murdoch.duncan at 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



[Rd] introspective capabilities
Christophe Rhodes