Many thanks for the answers on my previous question, it got me started. Indeed, stack() was the function I was vaguely remembering.
However, I didn¹t get very far because my data set is way more complicated then I expected. In fact I have a mixture of levels and lists within a list. Basically, it resemble the following list (named data) made of the levels H and the list of lists A and T. for each level, the T[x]s are the same but the A[x]s are different. >H <- c(rep('H1',3),rep('H2',3),rep('H3',3)) > A <- list(A1=round(runif(3,100,1000)), + A2=round(runif(3,100,1000)), + A3=round(runif(3,100,1000)), + A4=round(runif(3,100,1000)), + A5=round(runif(3,100,1000)), + A6=round(runif(3,100,1000)), + A7=round(runif(3,100,1000)), + A8=round(runif(3,100,1000)), + A9=round(runif(3,100,1000)) + ) > T1 <- round(runif(7,1,10)) > T2 <- round(runif(5,1,10)) > T3 <- round(runif(6,1,10)) > T <- list(T1,T1,T1,T2,T2,T2,T3,T3,T3) > data <- list(H=H,A=A,T=T) Basically, it can be represented as the following data structure: H A T H1 458 255 160 4 8 10 8 9 9 3 H1 343 424 298 4 8 10 8 9 9 3 H1 608 831 544 4 8 10 8 9 9 3 H2 616 266 413 7 3 5 4 5 H2 687 796 752 7 3 5 4 5 H2 814 921 228 7 3 5 4 5 H3 789 558 400 8 3 3 7 6 5 H3 845 298 855 8 3 3 7 6 5 H3 725 366 621 8 3 3 7 6 5 My goal is to get for each level of H a data frame of the value of As with an indices representing what level of A it is coming and a single representation of the Ts with a corresponding level. And so for every Hs. My goal is to apply a linear model of value~ind for each H (of course, the data are fake here) followed by an anova analysis for each H. Thus, for each level of H I need something similar to: $H1 value ind 458 A1 255 A1 160 A1 343 A2 424 A2 298 A2 608 A3 831 A3 544 A3 4 T 8 T 10 T 8 T 9 T 9 T 3 T ... As you might have guess, we have several tens of thousand of Hs, thus, I cannot just do it manually one at a time. I tried breaking down the problem into small pieces but ended up not very far. I was very excited when I got the following call to produce the expected result: > a <- tapply(data$A,data$H,function(x) stack(x)) > t <- tapply(data$T,data$H,function(x) x[1]) > tt <- lapply(t,function(x) data.frame(values=unlist(x), + ind=rep(1:length(x),sapply(x,length)))) >a $H1 values ind 1 458 A1 2 255 A1 3 160 A1 4 343 A2 5 424 A2 6 298 A2 7 608 A3 8 831 A3 9 544 A3 ... > tt $H1 values ind 1 4 1 2 8 2 3 10 3 4 8 4 5 9 5 6 9 6 7 3 7 ... However, I tried to rbind the list in a and tt (which represent the H level) using lapply or sapply without any success. I am in need of some guru advices on this one... Also, I am not sure this is the most elegant want to produce the data structure I am trying to build. Any advice? Thanks -- Marco Blanchette, Ph.D. Assistant Investigator Stowers Institute for Medical Research 1000 East 50th St. Kansas City, MO 64110 Tel: 816-926-4071 Cell: 816-726-8419 Fax: 816-926-2018 ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.