Beckstrand, Janis, NCOD
2013-Nov-21 21:34 UTC
[R] How to get a nested " list of lists of data.frames" into a data.frame or nested dataframe for easy viewing
I have data in a list of the form: list(list(dataframe())). It have attached some random data with this structure called "l.Rdata". The structures in l.Rdata are as follows: a list of 4 groups: a list of 12 statistics: (and for each statistic, a dataframe contains (1row,3cols) of values named "estimates", "lowerCL", "upperCL"). See the sample data set attached. I am using the following syntax to create this type of file: require(epiR) l<-lapply(seq_len(ncol(data[,])),function(i) {output<-epi.tests(g2[[i]], conf.level = 0.95, verbose = TRUE) return(output)}) #The package "epi.tests" produces 12 statistics and is in the epiR{} program. I need to get the information in my lists, like l.Rdata, into get a data.frame or other format (using cat or xtable or something?) that is easily readable and that I see on the screen and save and print out, and that looks like group1 group2 group3 group4 Statistics Est (lower,upper) Est (lower,upper) Est (lower,upper) Est (lower,upper) aprev .32 (.29,.34) .31 (.27, .25) etc etc tprev etc . Statistic 12 .40 (.38, .42) etc etc I have looked at the various examples of how to get a list format to a dataframe at http://stackoverflow.com/questions/4512465/what-is-the-most-efficient-wa y-to-cast-a-list-as-a-data-frame?rq=1 and at http://stackoverflow.com/questions/4227223/r-list-to-data-frame And (I think) I have attempted to use them all!, trying also to augment each of them to convert the list of lists in the structure for output that I need. After several days of trying, the structures I get out are still not conducive to getting the data into a data.frame format where I have 12 observations(statistics) of 12 (4 x 3) numbers that I can label or nest into 4 groups to view on a screen or print out. I also have a second problem which I think it related. As shown above, I want to collapse the columns named "lower" and "upper" in l.Rdata into to single "Confidence Interval (CI)" column, within each of the groups and add the formatting ( , ) to the column. But my syntax for this doesn't work either. Even when I pull out a list for a single group...(like group1) and redefine it as.data.frame (using as.matrix, rbind, unlist, etc), I am not getting the syntax "paste(group1[,2},group1[,3],collapse=", ") " to collapse the rows in columns 2 and 3, even though I think this syntax is exactly like syntax that I have used successfully before. (I copied the syntax out of a program that has run fine before). I have looked for and tried other options such as concatenate, sprint, etc. I think this second problem is due to the fact that I still have a "list" structure hidden in my attempts at transforming the structures in l.Rdata. Any help is appreciated. Thanks Jan Jan Beckstrand