Log-sum-antilog is faster than apply by several times, but vector multiplication in a for loop as David and Chuck have suggested is several times faster than that. -- Sent from my phone. Please excuse my brevity.
On November 8, 2016 12:23:04 PM PST, "Doran, Harold" <hdo...@air.org> wrote: >It¹s a good suggestion. Multiplication in this case is over 7 columns >in >the data, but the number of rows is millions. Unfortunately, the values >are negative as these are actually gauss-quad nodes used to evaluate a >multidimensional integral. > >colSums is better than something like apply(dat, 2, sum); I was hoping >there was something similar to colSums/rowSums using prod(). > >On 11/8/16, 3:00 PM, "Fox, John" <j...@mcmaster.ca> wrote: > >>Dear Harold, >> >>If the actual data with which you're dealing are non-negative, you >could >>log all the values, and use colSums() on the logs. That might also >have >>the advantage of greater numerical accuracy than multiplying millions >of >>numbers. Depending on the numbers, the products may be too large or >small >>to be represented. Of course, logs won't work with your toy example, >>where rnorm() will generate values that are both negative and >positive. >> >>I hope this helps, >> John >>----------------------------- >>John Fox, Professor >>McMaster University >>Hamilton, Ontario >>Canada L8S 4M4 >>web: socserv.mcmaster.ca/jfox >> >> >>________________________________________ >>From: R-help [r-help-boun...@r-project.org] on behalf of Doran, Harold >>[hdo...@air.org] >>Sent: November 8, 2016 10:57 AM >>To: r-help@r-project.org >>Subject: [R] Alternative to apply in base R >> >>Without reaching out to another package in R, I wonder what the best >way >>is to speed enhance the following toy example? Over the years I have >>become very comfortable with the family of apply functions and >generally >>not good at finding an improvement for speed. >> >>This toy example is small, but my real data has many millions of rows >and >>the same operations is repeated many times and so finding a less >>expensive alternative would be helpful. >> >>mm <- matrix(rnorm(100), ncol = 10) >>rn <- apply(mm, 1, prod) >> >> [[alternative HTML version deleted]] >> >>______________________________________________ >>R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >>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. > >______________________________________________ >R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >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. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.