Re: [R] Faster way of summing values up based on expand.grid

2013-03-26 Thread arun
(mycombos2,function(x) values3[x]))) cbind(sumNew1,sumNew2,sumNew3) A.K. - Original Message - From: Dimitri Liakhovitski dimitri.liakhovit...@gmail.com To: r-help r-help@r-project.org Cc: Sent: Monday, March 25, 2013 5:00 PM Subject: [R] Faster way of summing values up based on expand.grid Hello

Re: [R] Faster way of summing values up based on expand.grid

2013-03-26 Thread arun
Velez jorgeivanve...@gmail.com Sent: Tuesday, March 26, 2013 9:39 AM Subject: Re: [R] Faster way of summing values up based on expand.grid HI, You could also try this: set.seed(25) values1-rnorm(10) values2-rnorm(10) values3-rnorm(10) mycombos-expand.grid(1:10,1:10,1:10,1:10) mycombos1

[R] Faster way of summing values up based on expand.grid

2013-03-25 Thread Dimitri Liakhovitski
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

Re: [R] Faster way of summing values up based on expand.grid

2013-03-25 Thread Dimitri Liakhovitski
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) }

Re: [R] Faster way of summing values up based on expand.grid

2013-03-25 Thread Jorge I Velez
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,

Re: [R] Faster way of summing values up based on expand.grid

2013-03-25 Thread Dimitri Liakhovitski
Thank you so much, Jorge. I checked and your method is at least 200 times faster than mine! Exactly what I was looking for. Dimitri On Mon, Mar 25, 2013 at 5:49 PM, Jorge I Velez jorgeivanve...@gmail.comwrote: Hi Dimitri, If I understood correctly, the following will do: system.time(sum1 -