Thanks a lot, Phil. I decided to do it via the list - as you suggested, but had to do some gymnastics, which Reduce will greatly help me to avoid now! Dimitri
On Tue, Nov 9, 2010 at 12:36 PM, Phil Spector <spec...@stat.berkeley.edu> wrote: > Dimitri - > Usually the easiest way to solve problems like this > is to put all the dataframes in a list, and then use > the Reduce() function to merge them all together at the > end. You don't give many details about how the data frames > are constructed, so it's hard to be specific about the > best way to put them in a list, but this short example should give you an > idea of what I'm talking about: > >> x<-data.frame(a=1,b=2,c=3) >> y<-data.frame(a=10,b=20,d=30) >> z<-data.frame(a=12,b=19,f=25) >> a<-data.frame(a=9,b=10,g=15) >> Reduce(function(x,y)merge(x,y,all=TRUE),list(x,y,z,a)) > > a b c d f g > 1 1 2 3 NA NA NA > 2 9 10 NA NA NA 15 > 3 10 20 NA 30 NA NA > 4 12 19 NA NA 25 NA > > Hope this helps. > - Phil Spector > Statistical Computing Facility > Department of Statistics > UC Berkeley > spec...@stat.berkeley.edu > > > > > > On Tue, 9 Nov 2010, Dimitri Liakhovitski wrote: > >> Hello! >> >> I am running a loop. The result of each run of the loop is a data >> frame. I am merging all the data frames. >> For exampe: >> >> The dataframe from run 1: >> x<-data.frame(a=1,b=2,c=3) >> >> The dataframe from run 2: >> y<-data.frame(a=10,b=20,d=30) >> >> What I want to get is: >> merge(x,y,all.x=T,all.y=T) >> >> Then I want to merge it with the output of the 3rd run, etc. >> >> Unfortunately, I can't create the placeholder for the overall resutls >> BEFORE I run the loop because I don't even know how many columns I'll >> end up with - after merging all the data frames. >> I was thinking of creating an empty list: >> >> first<-NULL >> >> ...and then updating it during each run by merging it with the data >> frame that is the output of the run. However, when I try to merge the >> empty list with any non-empty data frame - it ends up empty: >> merge(first,a,,all.x=T,all.y=T) >> >> Is there a way to make it merge while keeping everything? >> Thanks a lot! >> -- >> Dimitri Liakhovitski >> Ninah Consulting >> www.ninah.com >> >> ______________________________________________ >> 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. >> > -- Dimitri Liakhovitski Ninah Consulting www.ninah.com ______________________________________________ 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.