Oh my goodness David! Don't forget that matrices are just vectors in column major order.
> m/rep(v,e=2) [,1] [,2] [,3] [1,] 2 2 2 [2,] 1 1 1 (the generalization is obvious) should be far more efficient and simpler than running apply loops. -- 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 7:59 AM, David L Carlson <dcarl...@tamu.edu> wrote: > You don't need do.call: > >> t(t(m)/v) > [,1] [,2] [,3] > [1,] 2 2 2 > [2,] 1 1 1 > >> t(apply(m, 1, function(x) x/v)) > [,1] [,2] [,3] > [1,] 2 2 2 > [2,] 1 1 1 > > ------------------------------------- > David L Carlson > Department of Anthropology > Texas A&M University > College Station, TX 77840-4352 > > > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On > Behalf Of carol white > Sent: Wednesday, May 14, 2014 9:52 AM > To: r-h...@stat.math.ethz.ch > Subject: [R] matrix column division by vector > > 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.