(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
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
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
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)
}
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,
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 -
6 matches
Mail list logo