[R] fastest way to multiply each column of a matrix by a single vlaue

Prof Brian D Ripley ripley at stats.ox.ac.uk
Tue Sep 4 07:49:09 CEST 2001


On Mon, 3 Sep 2001, Jason Liao wrote:

> Let A be a m by n matrix and b a length n vector. What is the fastest
> vectorized code for doing
>
> for(j in 1:n) A[, j] <- A[, j]/b[j]   ?
>
> solution 1:
>
> t(t(A)/b)
>
> solution 2:
>
> B <- matrix( rep(b, m), byrow=T, nrow=m )
> A/B

You don't need the rep because of the re-cycling rule.  Either

B <- matrix(b, m, n, byrow=T)

or, a litle faster

A/rep(b, rep(m, n))


You'll find the S/R system code uses the last most often.

[...]

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272860 (secr)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list