> On 4 Nov 2016, at 17:35, peter dalgaard <pda...@gmail.com> wrote: > > Notice though, that Bert loses (or _should_ lose) for larger values of N, > since that method involves O(N^3) operations whereas the other two are > O(N^2). I am a bit surprised that sweep() is so inefficient even at N=1000.
I also got different results on Mac OS X (with R 3.3.1 and vecLib BLAS): Unit: milliseconds expr min lq mean median uq max neval { t(y * t(x)) } 18.46369 19.61954 25.77548 21.24242 22.72943 88.03469 100 { x %*% diag(y) } 28.12786 29.87109 37.83814 31.59671 32.77839 101.68553 100 { sweep(x, 2, y, `*`) } 11.19871 12.76442 21.48670 14.51618 15.70665 100.51444 100 Note that sweep() is considerably _faster_ than the other two methods (which I found quite surprising). Of course, if you care about speed (and memory efficiency), you could also library(wordspace) scaleMargins(x, cols=y) Best, Stefan ______________________________________________ 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.