On Tue, 2005-12-06 at 15:19 +0100, Dubravko Dolic wrote: > Hi all, > > the moment you hit the 'send' button you know the answer... > > I approached a solution similar to this one given by Marc. But maybe > there is a better one? Even because this operation is done in a > for-loop during which R gets new data from a database. So I sum up 16 > data.frames eventually. > > Dubro
<SNIP> OK....so here is one possible approach to a more generic solution: # Preallocate a list with 16 elements DF.List <- replicate(16, list(numeric(0))) DF.List looks like: > head(DF.List) [[1]] numeric(0) [[2]] numeric(0) [[3]] numeric(0) [[4]] numeric(0) ... # Do your loop here, placing the actual results # of your queries into DF.List[[i]]. I am just using # random samples here for the example. # NOTE: I am making the assumption in this example # that each resultant DF will have the same structure. for (i in 1:16) { DF.List[[i]] <- data.frame(n = sample(20, 10), V1 = sample(20, 10), V2 = sample(0:10, 10)) } # Now rbind() the data frames together DF.All <- do.call("rbind", DF.List) # Now do use aggregate() to get the sums of V1 and V2 # by 'n'. DF.Sums <- aggregate(DF.All[, c("V1", "V2")], list(n = DF.All$n), sum) > DF.Sums n V1 V2 1 1 161 65 2 2 86 67 3 3 72 28 4 4 59 31 5 5 101 48 6 6 68 41 7 7 75 34 8 8 73 30 9 9 59 26 10 10 80 16 11 11 127 44 12 12 111 78 13 13 111 38 14 14 69 28 15 15 71 26 16 16 90 51 17 17 50 36 18 18 48 41 19 19 92 38 20 20 71 22 Does that get closer to what you need? HTH, Marc Schwartz ______________________________________________ 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