On Sat, 15 Nov 2008, kathie wrote:
Dear R users... I made the R-code for this triple summation computation http://www.nabble.com/file/p20517134/a.jpg ------------------------------------------------- Here is my code.. x=seq(.1,1,.1); l=10 y=seq(1,10); m=10 z=seq(.1,1,.1); n=10 sum(sapply(1:l, function(i) {sum(sapply(1:m, function(j) {sum(sapply(1:n, function(k){exp(x[i]*y[j]*z[k] )/gamma(y[j]+1)}))^(1.5) }))})) ------------------------------------------------- In fact, this is a part of optimization and in my real data the number of x is about 5000. So, I guess if it is vectorized, then the running time could be shortened. How could I vectorize this? or any suggestion will be greatly appreciated.
gamma and exp ARE vectorized. Do all the computations in the inner most loop in a single call, then sum those, then raise to 1.5, then sum the result
something like
foo <- function(x,y,z) {exp( x * y * z )/gamma( y+1 )} dat <- expand.grid( x=x, y=y, z=z ) res <- do.call( foo, dat ) sum( rowSums( matrix( res, nc= n) )^1.5 )
[1] 1090.613 HTH, Chuck
Kathryn Lord -- View this message in context: http://www.nabble.com/make-a-triple-summation-more-efficient-tp20517134p20517134.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ 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.
Charles C. Berry (858) 534-2098 Dept of Family/Preventive Medicine E mailto:[EMAIL PROTECTED] UC San Diego http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901 ______________________________________________ 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.