Thanks a lot! now my program works about 10x faster (and I will have results before deadline!) to sum up more generally - if you want matrix operation to be conditional it is advisable to have results pre-computed. (?)
Lukasz On 23 March 2012 19:50, Berend Hasselman <b...@xs4all.nl> wrote: > > On 23-03-2012, at 17:29, Lukasz Kielpinski wrote: > >> Hello List! >> >> I stumbled across an efficiency problem - calculation that would be >> probably done very fast as a matrix operation I must perform as a >> for-loop. >> My intention was to do a conditional operation in matrix depending on >> the information in first column (summing as many data points from >> vector my_data as the number specified in the first column of the >> matrix) but the result is that the function takes the condition only >> from the first row of column for calculations in every row. >> Is it possible to solve this problem as a matrix calculation or I have >> to iterate over each row? (which I suppose is much slower) >> >> #problem looks like: >> my_mat <- matrix(1:50,ncol=2) >> my_mat <- cbind(my_mat,0) #here I have a matrix with empty third >> column where I want to store my results >> my_data <- rnorm(25) #this is a dataset I want to use for filling the >> third column >> #and I did >> my_mat[,3] <- sum(my_data[1:my_mat[,1]]) + my_mat[,2] >> #which didn't work as I expected > > If I understand that this correctly I think you should do this > > my_data.csum <- cumsum(my_data) > my_mat[,3] <- my_data.csum[my_mat[,1]] + my_mat[,2] > > Berend > ______________________________________________ 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.