Hi Dimitri, If I understood correctly, the following will do:
system.time(sum1 <- apply(mycombos, 1, function(x) sum(values1[x]))) system.time(sum2 <- apply(mycombos, 1, function(x) sum(values2[x]))) system.time(sum3 <- apply(mycombos, 1, function(x) sum(values3[x]))) cbind(sum1, sum2, sum3) HTH, Jorge.- On Tue, Mar 26, 2013 at 8:12 AM, Dimitri Liakhovitski <> wrote: > This is another method I can think of, but it's also slow: > > for(i in 1:nrow(mycombos)){ # i=1 > indexes=rep(0,10) > myitems<-unlist(mycombos[i,1:4]) > indexes[myitems]<-1 > mycombos$sum1[i]<-sum(values1 * indexes) > mycombos$sum2[i]<-sum(values2 * indexes) > mycombos$sum3[i]<-sum(values3 * indexes) > } > > > On Mon, Mar 25, 2013 at 5:00 PM, Dimitri Liakhovitski < > dimitri.liakhovit...@gmail.com> wrote: > > > Hello! > > > > # I have 3 vectors of values: > > values1<-rnorm(10) > > values2<-rnorm(10) > > values3<-rnorm(10) > > # In real life, all 3 vectors have a length of 25 > > > > # I create all possible combinations of 4 based on 10 elements: > > mycombos<-expand.grid(1:10,1:10,1:10,1:10) > > dim(mycombos) > > # Removing rows that contain pairs of identical values in any 2 of > > these columns: > > mycombos<-mycombos[!(mycombos$Var1 == mycombos$Var2),] > > mycombos<-mycombos[!(mycombos$Var1 == mycombos$Var3),] > > mycombos<-mycombos[!(mycombos$Var1 == mycombos$Var4),] > > mycombos<-mycombos[!(mycombos$Var2 == mycombos$Var3),] > > mycombos<-mycombos[!(mycombos$Var2 == mycombos$Var4),] > > mycombos<-mycombos[!(mycombos$Var3 == mycombos$Var4),] > > dim(mycombos) > > > > # I want to write sums of elements from values1, values2, and values 3 > > whose numbers are contained in each column of mycombos. Here is how I am > > going it now - using a loop: > > mycombos$sum1<-NA > > mycombos$sum2<-NA > > mycombos$sum3<-NA > > for(i in 1:nrow(mycombos)){ > > mycombos$sum1[i]<-values1[[mycombos[i,"Var1"]]] + > > values1[[mycombos[i,"Var2"]]] + values1[[mycombos[i,"Var3"]]] + > > values1[[mycombos[i,"Var4"]]] > > mycombos$sum2[i]<-values2[[mycombos[i,"Var1"]]] + > > values2[[mycombos[i,"Var2"]]] + values2[[mycombos[i,"Var3"]]] + > > values2[[mycombos[i,"Var4"]]] > > mycombos$sum3[i]<-values3[[mycombos[i,"Var1"]]] + > > values3[[mycombos[i,"Var2"]]] + values3[[mycombos[i,"Var3"]]] + > > values3[[mycombos[i,"Var4"]]] > > } > > head(mycombos);tail(mycombos) > > > > # It's going to take me forever with this loop. Is there a faster way of > > doing the dame thing? Thanks a lot! > > > > -- > > Dimitri Liakhovitski > > > > > > -- > Dimitri Liakhovitski > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. > [[alternative HTML version deleted]] ______________________________________________ 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.