[R] Re-sort list of vectors

Liaw, Andy andy_liaw at merck.com
Mon Aug 15 19:18:05 CEST 2005


You could try using one of the sparse representations of matrices in the
SparseM or Matrix packages.  Both packages have vignettes.

Andy

> From: Jan Hummel
> 
>  Thanks a lot! But unfortunately I will not know the 
> dimensions of both lists. And further, the lists may be 
> (partly) disjoint as: x <- list("1"=c(a=1, b=2, c=3), 
> "2"=c(d=4, b=5, e=6)). And last but not least I'm really have 
> to have access to the names of the named list items.
> 
> The problem I dealt with is in unlist() merging the names 
> together, as you can see in your example given: "V1", "V2" 
> and "V3". Because off interpreting the names later as 
> identifiers in db queries I'm really interested in getting 
> something like list("a"=c("1"=1), "b"=c("1"=2, "2"=5), 
> "c"=c("1"=3), "d"=c("1"=4), "e"=c("1"=6)) for the above input. 
> By giving the result this way I'm able to extract both names 
> from two sets as well as the according value between both items.
> 
> One point could be to build a matrix but this matrix would 
> have many NA's. So I prefer Lists of Lists.
> 
> Any ideas?
> 
> cheers
> 	Jan
> 
> -----Ursprüngliche Nachricht-----
> Von: Liaw, Andy [mailto:andy_liaw at merck.com] 
> Gesendet: Montag, 15. August 2005 17:31
> An: Jan Hummel; r-help at stat.math.ethz.ch
> Betreff: RE: [R] Re-sort list of vectors
> 
> If all vectors in the list have the same length, why not use 
> a matrix?  Then you'd just transpose the matrix if you need 
> to.  If you really have to have it as a list, here's one possibility:
> 
> > x <- list("1"=c(a=1, b=2, c=3), "2"=c(a=4, b=5, c=6)) x
> $"1"
> a b c
> 1 2 3 
> 
> $"2"
> a b c
> 4 5 6 
> > as.list(as.data.frame(t(matrix(unlist(x), nrow=3))))
> $V1
> [1] 1 4
> 
> $V2
> [1] 2 5
> 
> $V3
> [1] 3 6
> 
> Andy
> 
> 
> > From: Jan Hummel
> > 
> > Hi.
> > Can anyone suggest a simple way to re-sort in R a list of 
> vectors of 
> > the following form?
> > 
> > input
> > $"1"
> > 	a	b	c
> > 	1	2	3
> > $"2"
> > 	a	b	c
> > 	4	5	6
> > 
> > Output should be something like:
> > "a"
> > 	"1" 1
> > 	"2" 4
> > "b"
> > 	"1" 2
> > 	"2" 5
> > "c"
> > 	"1" 3
> > 	"2" 6
> > 
> > I've been futzing with mapply(), outer(), split(), rbind() 
> and so on 
> > but haven't found an elegant solution.
> > 
> > Thanks,
> > Jan.
> > 
> > P.S. E-mailed CCs of posted replies appreciated.
> > 
> > ______________________________________________
> > R-help at stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide! 
> > http://www.R-project.org/posting-guide.html
> > 
> > 
> >
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! 
> http://www.R-project.org/posting-guide.html
> 
> 
>




More information about the R-help mailing list