Dear R users, I am looking for more efficient way to compute the followings -------------------------------------------------------------------------- a <- matrix(c(1,1,1,1,2,2,2,2),4,2) b <- matrix(c(1,2,3,4),4,1) Eventually, I want to get this matrix, `c`. c <- matrix(c(1/1,1/2,1/3,1/4,2/1,2/2,2/3,2/4),4,2) -------------------------------------------------------------------------- In fact, #column of `a` is so big.. Is there a more efficient way to compute this instead of using "apply" or something? or "apply" is only way..? Any suggestion will be greatly appreciated. Regards, Kathryn Lord -- View this message in context: http://n4.nabble.com/VERY-SIMPLE-QUESTION-tp2013288p2013288.html Sent from the R help mailing list archive at Nabble.com.
Try this: sweep(a, 1, b, '/') On Fri, Apr 16, 2010 at 2:30 PM, Kathie <kathryn.lord2000 at gmail.com> wrote:> > Dear R users, > > I am looking for more efficient way to compute the followings > > -------------------------------------------------------------------------- > > a <- matrix(c(1,1,1,1,2,2,2,2),4,2) > b <- matrix(c(1,2,3,4),4,1) > > Eventually, I want to get this matrix, `c`. > > c <- matrix(c(1/1,1/2,1/3,1/4,2/1,2/2,2/3,2/4),4,2) > > -------------------------------------------------------------------------- > > In fact, #column of `a` is so big.. > > Is there a more efficient way to compute this instead of using "apply" or > something? or "apply" is only way..? > > Any suggestion will be greatly appreciated. > > Regards, > > Kathryn Lord > -- > View this message in context: http://n4.nabble.com/VERY-SIMPLE-QUESTION-tp2013288p2013288.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at 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. >-- Henrique Dallazuanna Curitiba-Paran?-Brasil 25? 25' 40" S 49? 16' 22" O
Since b is only one column, just make it a vector.> a <- matrix(c(1,1,1,1,2,2,2,2),4,2) > b <- c(1,2,3,4)then> result <- a/b > result[,1] [,2] [1,] 1.0000000 2.0000000 [2,] 0.5000000 1.0000000 [3,] 0.3333333 0.6666667 [4,] 0.2500000 0.5000000 should be what you want. It is also a bad idea to name the resulting matrix "c" since c(...) is a primitive function. Christian On Fri, 2010-04-16 at 09:30 -0800, Kathie wrote:> Dear R users, > > I am looking for more efficient way to compute the followings > > -------------------------------------------------------------------------- > > a <- matrix(c(1,1,1,1,2,2,2,2),4,2) > b <- matrix(c(1,2,3,4),4,1) > > Eventually, I want to get this matrix, `c`. > > c <- matrix(c(1/1,1/2,1/3,1/4,2/1,2/2,2/3,2/4),4,2) > > -------------------------------------------------------------------------- > > In fact, #column of `a` is so big.. > > Is there a more efficient way to compute this instead of using "apply" or > something? or "apply" is only way..? > > Any suggestion will be greatly appreciated. > > Regards, > > Kathryn Lord-- Christian Raschke Department of Economics and ISDS Research Lab (HSRG) Louisiana State University Patrick Taylor Hall, Rm 2128 Baton Rouge, LA 70803 crasch2 at lsu.edu
On Fri, 2010-04-16 at 09:30 -0800, Kathie wrote:> Dear R users, > > I am looking for more efficient way to compute the followings > > -------------------------------------------------------------------------- > > a <- matrix(c(1,1,1,1,2,2,2,2),4,2) > b <- matrix(c(1,2,3,4),4,1)Is there a reason why 'b' is a matrix? Anyway, if b is a matrix with more cols in your real world problem, sweep(a, 1, b[,1], "/") will get what you want. Otherwise sweep(a, 1, b, "/") will work whether b is a one col matrix or if you change it to a vector. HTH G> > Eventually, I want to get this matrix, `c`. > > c <- matrix(c(1/1,1/2,1/3,1/4,2/1,2/2,2/3,2/4),4,2) > > -------------------------------------------------------------------------- > > In fact, #column of `a` is so big.. > > Is there a more efficient way to compute this instead of using "apply" or > something? or "apply" is only way..? > > Any suggestion will be greatly appreciated. > > Regards, > > Kathryn Lord-- %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~% Dr. Gavin Simpson [t] +44 (0)20 7679 0522 ECRC, UCL Geography, [f] +44 (0)20 7679 0565 Pearson Building, [e] gavin.simpsonATNOSPAMucl.ac.uk Gower Street, London [w] http://www.ucl.ac.uk/~ucfagls/ UK. WC1E 6BT. [w] http://www.freshwaters.org.uk %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%