I would probably do it this way, tmp <- list(data.frame(name="sample1", red=20), data.frame(name="sample1", green=15), data.frame(name="sample2", red=10), data.frame(name="sample2", green=30))
fun1 <- function(df) data.frame(name=df$name, color=names(df)[2], value=df[[2]]) tmp1 <- lapply(tmp,fun1) tmp2 <- do.call(rbind,tmp1) tmp3 <- reshape(tmp2, idvar='name', timevar='color', direction='wide') This does the job, except for the extraneous "value." [and they can easily be removed using gsub()]. Whether or not it will work for a more general case, I don't know. -Don -- Don MacQueen Lawrence Livermore National Laboratory 7000 East Ave., L-627 Livermore, CA 94550 925-423-1062 On 6/3/16, 11:20 AM, "R-help on behalf of Ed Siefker" <r-help-boun...@r-project.org on behalf of ebs15...@gmail.com> wrote: >I have a list of data as follows. > >> list(data.frame(name="sample1", red=20), data.frame(name="sample1", >>green=15), data.frame(name="sample2", red=10), data.frame(name="sample >>2", green=30)) >[[1]] > name red >1 sample1 20 > >[[2]] > name green >1 sample1 15 > >[[3]] > name red >1 sample2 10 > >[[4]] > name green >1 sample2 30 > > >I would like to massage this into a data frame like this: > > name red green >1 sample1 20 15 >2 sample2 10 30 > > >I'm imagining I can use aggregate(mylist, by=samplenames, merge) >right? But how do I get the list of samplenames? How do I subset >each dataframe inside the list? > >______________________________________________ >R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >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. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.