Yes, but Jeff and I advocated essentially the same approach and the
difference between our versions is unimportant.

All the other approaches are at least aesthetically less desirable.

One "criticism" of our solution: it relies on the underlying
implementation of matrices rather than the matrix() API. In principle,
the implementation could change while the API remained constant.
However, the reality is that this would never happen (it would break
thousands of lines of code that use this approach because R was not in
the past and really still isn't entirely OO). But full disclosure
demands ...

Cheers,
Bert

-- Bert

Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374

"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
H. Gilbert Welch




On Wed, May 14, 2014 at 9:07 AM, David L Carlson <dcarl...@tamu.edu> wrote:
> Bert wins the race:
>
>> system.time(replicate(1e5, m/rep(v,e=2)))
>    user  system elapsed
>    0.25    0.00    0.25
>> system.time(replicate(1e5, m/matrix( v, ncol=ncol(m), nrow=nrow(m), 
>> byrow=TRUE)))
>    user  system elapsed
>    0.42    0.00    0.42
>> system.time(replicate(1e5, t(t(m)/v)))
>    user  system elapsed
>    1.31    0.00    1.33
>> system.time(replicate(1e5, sweep(m, 2, v, "/")))
>    user  system elapsed
>    3.39    0.00    3.40
>> system.time(replicate(1e5, t(apply(m, 1, function(x) x/v))))
>    user  system elapsed
>    5.04    0.01    5.06
>
> David C
>
> -----Original Message-----
> From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On 
> Behalf Of Jeff Newmiller
> Sent: Wednesday, May 14, 2014 10:28 AM
> To: carol white; carol white; r-h...@stat.math.ethz.ch
> Subject: Re: [R] matrix column division by vector
>
> Please post in plain text... your email is getting distorted and hard to read 
> by the HTML.
>
> I don't know how to use do.call for this, but when you understand how vectors 
> recycle and matrices and arrays are laid out in memory (read the Introduction 
> to R document if not) then the following comes to mind:
>
> mat2 <- m / matrix( v, ncol=ncol(m), nrow=nrow(m), byrow=TRUE )
>
> ---------------------------------------------------------------------------
> Jeff Newmiller                        The     .....       .....  Go Live...
> DCN:<jdnew...@dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
>                                       Live:   OO#.. Dead: OO#..  Playing
> Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
> /Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
> ---------------------------------------------------------------------------
> Sent from my phone. Please excuse my brevity.
>
> On May 14, 2014 7:51:36 AM PDT, carol white <wht_...@yahoo.com> wrote:
>>Hi,
>>What is the elegant script to divide the columns of a matrix by the
>>respective position of a vector elements?
>>
>>m=rbind(c(6,4,2),c(3,2,1))
>>
>>v= c(3,2,1)
>>
>>res= 6/3�� 4/2� 2/1
>>������� 3/3�� 2/2 �� 1/1
>>
>>
>>this is correct�
>>mat2 = NULL
>>
>>for (i in 1: ncol(m))
>>
>>��� mat2 = cbind(mat2, m[,i]/ v[i])
>>
>>
>>but how to do more compact and elegant with for ex do.call?
>>
>>Many thanks
>>
>>Carol
>>       [[alternative HTML version deleted]]
>>
>>
>>
>>------------------------------------------------------------------------
>>
>>______________________________________________
>>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.
>
> ______________________________________________
> 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.
> ______________________________________________
> 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.

______________________________________________
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.

Reply via email to