From: Adaikalavan Ramasamy <ramasamy_at_cancer.org.uk>

Date: Mon 15 Aug 2005 - 16:00:04 EST

R-help@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 Received on Tue Aug 16 04:09:47 2005

Date: Mon 15 Aug 2005 - 16:00:04 EST

Here is one possible and ugly hack.

mylist <- list("1"=c(a=1, b=2, c=3), "2"=c(d=4, b=5, e=6))

myvec <- unlist( mylist )

1.a 1.b 1.c 2.d 2.b 2.e

1 2 3 4 5 6

mymat <- sapply( strsplit( names(myvec) , split="\\." ) , c )

[,1] [,2] [,3] [,4] [,5] [,6]

[1,] "1" "1" "1" "2" "2" "2"

[2,] "a" "b" "c" "d" "b" "e"

tmp <- data.frame( "main"=mymat[2,], "sub"=mymat[ 1,], "value"=myvec ) main sub value 1.a a 1 1 1.b b 1 2 1.c c 1 3 2.d d 2 4 2.b b 2 5 2.e e 2 6

I would be quite happy with at this point to loop through the rows and insert this element by element into MySQL. This may be inefficient for large datasets. Otherwise I can create this into a matrix with NAs.

So here is my ugly hack to get the list format that you desire.

tmp2 <- data.frame( "main"=tmp$main,

"elements"=paste('"', tmp$sub, '"=', tmp$value, sep="") )

newlist <- tapply( noquote(as.character(tmp2$elements)), tmp2$main, c )

newlist

$a

[1] "1"=1

$b

[1] "1"=2 "2"=5

$c

[1] "1"=3

$d

[1] "2"=4

$e

[1] "2"=6

I am sure someone will come up with a shorter and neater solution.

Regards, Adai

On Mon, 2005-08-15 at 19:09 +0200, Jan Hummel wrote:

> 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@merck.com]
**> Gesendet: Montag, 15. August 2005 17:31
**> An: Jan Hummel; r-help@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@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@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@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 Received on Tue Aug 16 04:09:47 2005

*
This archive was generated by hypermail 2.1.8
: Sun 23 Oct 2005 - 15:21:17 EST
*