Re: [Rd] relist, an inverse operator to unlist

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Wed, 23 May 2007 08:10:56 -0400

# returns list(a1 = 1, a2 = 2, b = 3) with an attribute
# "reshapeLong" containing skeleton (existing reshape also uses
# "reshapeWide" and "reshapeLong" attributes)

L <- list(a = 1:2, b = 3)
long <- reshape(L, direction = "long")

# returns original list but with an attribute "reshapeWide"

reshape(long, direction = "wide")

In the last case there a new optional skeleton argument would be added.

On 5/23/07, Andrew Clausen <clausen_at_econ.upenn.edu> wrote:
> Hi Gabor,
>
> Can you suggest some examples of how your proposal could be used?
> Reshape never returns a vector.
>
> Cheers,
> Andrew
>
> On Tue, May 22, 2007 at 07:36:56PM -0400, Gabor Grothendieck wrote:
> > One additional idea.
> >
> > I wonder if reshape might be promoted to a generic and relist made
> > into methods for it. The unlisted version of an object would be the "long"
> > version and the original version of the list would be the "wide" version.
> >
> > This would consolidate the two concepts together and make it
> > easier to use since the user could leverage his knowledge of
> > how reshape works to lists where it would work analogously.
> >
> > Essentially reshape(myList, direction = "long") would be
> > similar to unlist but would add the attributes need to reverse
> > the procedure and reshape(myList, direction = "wide")
> > would perform the inversion.
> >
> > I am not sure if the reshape package has any bearing here
> > as well.
> >
> > On 5/22/07, Andrew Clausen <clausen_at_econ.upenn.edu> wrote:
> > >Hi Seth,
> > >
> > >On Mon, May 21, 2007 at 05:15:10PM -0700, Seth Falcon wrote:
> > >> I will also add that the notion of a default argument on a generic
> > >> function seems a bit odd to me. If an argument is available for
> > >> dispatch, I just don't see what sense it makes to have a default. In
> > >> those cases, the default should be handled by the method that has a
> > >> signature with said argument matching the "missing" class.
> > >>
> > >> What often does make sense is to define a generic function where some
> > >> argument are not available for dispatch. For example:
> > >>
> > >> setGeneric("foo", signature="flesh",
> > >> function(flesh, skeleton=attr(flesh, "skeleton")
> > >> standardGeneric("foo")))
> > >
> > >That's an excellent suggestion. Thanks! However, I had to set the
> > >signature
> > >to c("numeric", "missing") rather than just "numeric".
> > >
> > >I have uploaded a new version here:
> > >
> > > http://www.econ.upenn.edu/~clausen/computing/relist.R
> > >
> > >Cheers,
> > >Andrew
> > >
> > >______________________________________________
> > >R-devel_at_r-project.org mailing list
> > >https://stat.ethz.ch/mailman/listinfo/r-devel
> > >
>



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed 23 May 2007 - 12:21:06 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 23 May 2007 - 12:33:41 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.