[Rd] relist, an inverse operator to unlist

Gabor Grothendieck ggrothendieck at gmail.com
Wed May 23 14:10:56 CEST 2007


# 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
> > >
>



More information about the R-devel mailing list