Well, I'm not sure what's "smart" and what's "dumb." As Mark said, a standard prescription for this sort of thing is to use apply() type calls -- but that actually is still using a loop, though generally very efficiently.
If you want to avoid even that sort of hidden looping then try: matrix(as.vector(A)-as.vector(B),nr=nrow(A)) If B is a vector, not a matrix, the as.vector(B) cast isn't necessary. -- Bert Gunter Genentech Non-Clinical Statistics South San Francisco, CA > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Michael > Sent: Monday, March 06, 2006 3:11 PM > To: [email protected] > Subject: [R] is there a way to let R do smart matrix-vector operation? > > Hi all, > > I want to substract vector B from A's each column... how can R do that > smartly without a loop? > > > A=matrix(c(2:7), 2, 3) > > A > [,1] [,2] [,3] > [1,] 2 4 6 > [2,] 3 5 7 > > B=matrix(c(1, 2), 2, 1) > > B > [,1] > [1,] 1 > [2,] 2 > > A-B > Error in A - B : non-conformable arrays > > [[alternative HTML version deleted]] > > ______________________________________________ > [email protected] mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html > ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
