Thanks for the benchmark. I actually wanted to go with the winner, except the x-t(mat) output is very different than the others. Mike
On Wed, Dec 5, 2012 at 4:40 PM, arun <smartpink...@yahoo.com> wrote: > Hi, > > By comparing the different methods: > set.seed(5) > mat1<-matrix(sample(1:1e6,1e6,replace=TRUE),ncol=10000) > set.seed(25) > x<-sample(1:1e6,10000,replace=TRUE) > system.time(z1<-sweep(-mat1,2,x,"+")) > # user system elapsed > # 0.076 0.000 0.069 > system.time(z2<-apply(-mat1,1,`+`,x)) > # user system elapsed > # 0.036 0.000 0.031 > system.time(z3<-aaply(-mat1,1,`+`,x)) > # user system elapsed > # 1.880 0.000 1.704 > system.time(z4<- x-t(mat1)) #winner > # user system elapsed > # 0.004 0.000 0.007 > system.time(z5<- t(x-t(mat1))) > # user system elapsed > # 0.008 0.000 0.009 > > > A.K. > > > > > > ________________________________ > From: C W <tmrs...@gmail.com> > To: arun <smartpink...@yahoo.com> > Cc: R help <r-help@r-project.org>; Sarah Goslee <sarah.gos...@gmail.com> > Sent: Wednesday, December 5, 2012 4:11 PM > Subject: Re: [R] data manipulation between vector and matrix > > > thanks, I knew about apply, but did not you you can put plus signs with > quotes. That's a cool tricky, > Mike > > > On Wed, Dec 5, 2012 at 4:05 PM, arun <smartpink...@yahoo.com> wrote: > > HI, > >In addition to ?sweep(), you can use > > > >apply(-mat,1,`+`,x) > > > >#or > >library(plyr) > >aaply(-mat,1,"+",x) > > > > > >A.K. > > > > > > > > > > > > > > > >----- Original Message ----- > >From: C W <tmrs...@gmail.com> > >To: Sarah Goslee <sarah.gos...@gmail.com> > >Cc: r-help <r-help@r-project.org> > >Sent: Wednesday, December 5, 2012 1:51 PM > >Subject: Re: [R] data manipulation between vector and matrix > > > >Thanks, Sarah. First time heard about sweep(), it worked just the way I > >wanted. > >Mike > > > >On Wed, Dec 5, 2012 at 1:42 PM, Sarah Goslee <sarah.gos...@gmail.com> > wrote: > > > >> Hi, > >> > >> On Wed, Dec 5, 2012 at 1:30 PM, C W <tmrs...@gmail.com> wrote: > >> > Dear list, > >> > I was curious how to subtract a vector from matrix? > >> > > >> > Say, I have > >> > > >> > mat <- matrix(1:40, nrow=20, ncol=2) > >> > > >> > x <-c(1,2) > >> > >> Thanks for the actual reproducible example. > >> > >> > I want, > >> > > >> > x-mat[1,] and x-mat[2,], and so on... Basically, subtract column > elements > >> > of x against column elements in mat. > >> > > >> > But x-mat won't do it. > >> > >> This will (note the modification to get x - mat): > >> > sweep(-mat, 2, x, "+") > >> [,1] [,2] > >> [1,] 0 -19 > >> [2,] -1 -20 > >> [3,] -2 -21 > >> [4,] -3 -22 > >> [5,] -4 -23 > >> etc. > >> > >> -- > >> Sarah Goslee > >> http://www.functionaldiversity.org > >> > > > > [[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. > > > > > [[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.