[R] how to reverse a list

rolf at math.unb.ca rolf at math.unb.ca
Thu Apr 12 00:02:41 CEST 2007

Weiwei Shi wrote:

> I am wondering if there is a quick way to "reverse" a list like this:
> t0 <- list(a=1, b=1, c=2, d=1)
> reverst t0 to t1
> > t1
> $`1`
> [1] "a" "b" "d"
> $`2`
> [1] "c"

t1 <- tapply(unlist(t0),unlist(t0),function(x){names(x)})

works for your example.  Not clear how ``general'' an answer
you want.

If the entries of your list are not scalars, then the problem is much
harder I think.  (And may not even be well posed.)  But then you
should be using a *vector*, not a list.

Don't use a chainsaw when you need a fretsaw.


                                        Rolf Turner
                                        rolf at math.unb.ca

More information about the R-help mailing list