Re: [Rd] introspective capabilities

2010-09-01 Thread Christophe Rhodes
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

2010-09-01 Thread Duncan Murdoch

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

2010-09-01 Thread Mark.Bravington
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

2010-08-30 Thread Duncan Murdoch

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