From ggrothendieck at gmail.com  Sun May  8 02:17:28 2005
From: ggrothendieck at gmail.com (Gabor Grothendieck)
Date: Sun May  8 02:17:37 2005
Subject: [Rd] how to add method to .Primitive function
In-Reply-To: <C698D707214E6F4AB39AB7096C3DE5A59E9336@phost015.EVAFUNDS.intermedia.net>
References: <C698D707214E6F4AB39AB7096C3DE5A59E9336@phost015.EVAFUNDS.intermedia.net>
Message-ID: <971536df05050717171eebcffe@mail.gmail.com>

Actually I think Simon's approach is a good one.  Maybe Simon's
comment was really intended to say that its dangerous
to redefine list operations but it should not be dangerous
to define a subclass of list and override operations that
way.  Also since the whole purpose of this is for speed I think
S3 is a better fit since from what I have seen S3 is faster
than S4.

On 5/7/05, Vadim Ogranovich <vograno@evafunds.com> wrote:
> Thank you for the tip! I'll see if I can take it on to "[<-.mylist"
> 
> Why do you think it will be hard to replace data frames? Insightful
> recently introduced a new class, largeDataFrame or something like this.
> This new class looks and feels like a data.frame, but they made two key
> simplifications: all columns are atomic vectors and there is no
> rownames. Maintaining the latter is a big overhead in many data.frame
> operations, consider for example rbind() which needs to ensure uniquness
> of the row names.
> 
> I'd really like to hear why you think it would be a bad idea to have
> such a class.
> 
> Thanks,
> Vadim
> 
> > -----Original Message-----
> > From: Simon Urbanek [mailto:simon.urbanek@r-project.org]
> > Sent: Saturday, May 07, 2005 12:34 PM
> > To: Vadim Ogranovich
> > Cc: Gabor Grothendieck; r-devel@stat.math.ethz.ch
> > Subject: Re: [Rd] how to add method to .Primitive function
> >
> > On May 7, 2005, at 2:59 PM, Vadim Ogranovich wrote:
> >
> >
> > > But then mylist is not a list:
> > >
> > >
> > >> x <- new("mylist", x = list(x = 1, y = 2)) x[[1]]
> > >>
> > >>
> > > Error in x[[1]] : subscript out of bounds
> > >
> > > This is probably solvable by a sprinkle of setIs or setAs
> > spells, but
> > > each time I get into the S4 area I feel walking a mine-field.
> > >
> >
> > Well, then you can still use S3:
> > x <- list(x=1:5, y=5:1)
> > class(x) <- "mylist"
> > dim.mylist <- function(l) c(length(l[[1]]),length(l))
> > dim(x)
> > [1] 5 2
> > x[[1]]
> > [1] 1 2 3 4 5
> > is.list(x)
> > [1] TRUE
> >
> > I'm not saying it's a good idea, because you can still break other
> > things if you're not careful, but it's possible... If all you
> > want is
> > writing convenience functions for lists, that's fine, but I don't
> > think you can replace data frames with such objects easily ...
> >
> > Cheers,
> > Simon
> >
> >
> >
>


[Rd] how to add method to .Primitive function
Gabor Grothendieck