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.

Reply via email to