[R] R GUI and object browser

Prof Brian D Ripley ripley at stats.ox.ac.uk
Wed Jul 17 08:39:06 CEST 2002


This may be appealing, but

1) R objects such as lists have shared components. You get the creation
date of the object, not of it components, and in any case I suspect you
want the last modification date.

2) Attributes are selectively copied (or not), so the effort needed to
change the code to preserve/update the attribute will be very considerable.
`Modifying functions that create list objects' includes all those which
modify objects.

3) User-written code would also need to be altered to preserve/update the
attribute.

The only clean way I can see to do this would be to alter the internal
structure to store a creation date in a SEXPREC.  That would add some
memory overhead (but less than attributes).  It looks doable, but I remain
unconvinced it is worthwhile.



On Tue, 16 Jul 2002, Dan Putler wrote:

> Actually, it is fairly easy to give certain objects (those with a mode of
> "list", which includes data frames) a date attribute.  This can be done
> either after creating a list object and then providing its date attribute, or
> (in at least some instances) by modifying the function that creates that
> object to include the date attribute assignment.  The two functions needed to
> do this are the attr() and date().
>
> Here is an example of doing this after the fact:
>
> mydata <- data.frame(1:10,11:20)
> attr(mydata, "create.date") <- date()
>
> You can then get the value of the create.date attribute using the command
>
> attributes(mydata)$create.date
>
> Which will return a character string along the lines of
>
> "Tue Jul 16 22:12:05 2002"
>
> Moreover, my guess is that R functions that work on data frames will simply
> ignore the create.date attribute, or so my limited testing suggests.
>
> Modifying functions that create list objects often isn't hard either (although
> I don't know if this is always the case, but suspect it is).  It turns out
> that the last two assignment statements of the data.frame() function are:
>
> attr(value, "row.names") <- row.names
> attr(value, "class") <- "data.frame"
>
> where "value" is the internal variable name for the data frame within the
> data.frame() function.  If you modify the data.frame() function by adding the
> line
>
> attr(value, "create.date") <- date()
>
> after the assignment of the "class", any data frames created using this
> function will have a create.date attribute.
>
>
> On Tuesday 16 July 2002 03:23 pm, Patrick Connolly wrote:
> > On Mon, 15-Jul-2002 at 01:13AM -0700, Dan Putler wrote:
> > |> As part of the obveRsive GUI project, we've written a function with
> > |> much of the functionality that Patrick Connolly was suggesting
> > |> (which is a bit more compact than the output from ls.str()).  Alas,
> > |> no date capabilities.
> >
> > My method of getting the dates is somewhat inelegant.  However, it
> > could be simple if there was a date attribute of objects.  Would such
> > a thing create an overhead that could be too burdensome for people who
> > don't have a use for it?  Perhaps it could be one of the general
> > options that users could customize.
> >
> > |> The function is call ls.objects(), and example output appears below:
> > |>
> > |>    Object.Name Object.Mode Object.Type Observations Variables
> > |> 1    ccsest.df        list  data.frame          800        21
> > |> 2    ccsval.df        list  data.frame          800        21
> > |> 3   junkfactor     numeric      factor          100         1
> > |> 4     junklist        list     unknown            -         -
> > |> 5      junkmat     numeric      matrix          100         2
> > |> 6    junkmodel        list          lm            -         -
> > |> 7   ls.objects    function    function            -         -
> > |> 8      orderdf    function    function            -         -
> > |> 9          pkg   character      vector            1         1
> > |> 10       stuff        list  data.frame           12         2
> > |> 11         try     numeric      vector          100         1
> > |> 12        try1     numeric      vector          100         1
> > |> 13        try2     numeric      vector          100         1
> > |> 14      trydat        list  data.frame          100         2
> > |> 15     tryname   character      vector            1         1
> >
> > This is certainly less complicated than my approach and does some
> > things mine doesn't.
> >
> > best
>
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272860 (secr)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list