I'm wrong. Jeff's approach DOES use the matrix API and so I would say is better than mine.
Cheers, 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:22 AM, Bert Gunter <bgun...@gene.com> wrote: > 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.