How to do this in an elegant way formatrix/data frame/zoo? mat1 2 3 4 5 6 7 8 9 vector1 2 3 result0 1 2 2 3 4 4 5 6 ie 1-1 2-1 3-1 4-2 5-2 6-2 7-3 8-3 9-3 Thanks in advance. _________________________________________________________________ 08 [[alternative HTML version deleted]]
Dimitris Rizopoulos
2008-Mar-02 17:56 UTC
[R] elegant way to minus on each row of a matrix
try this:
mat <- matrix(1:9, 3, 3, TRUE)
dat <- as.data.frame(mat)
vec <- 1:3
result.mat <- mat - vec
result.dat <- dat - vec
result.mat
result.dat
I hope it helps.
Best,
Dimitris
----
Dimitris Rizopoulos
Biostatistical Centre
School of Public Health
Catholic University of Leuven
Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/(0)16/336899
Fax: +32/(0)16/337015
Web: http://med.kuleuven.be/biostat/
http://www.student.kuleuven.be/~m0390867/dimitris.htm
Quoting Bo Zhou <bozhou1981 at hotmail.com>:
>
> How to do this in an elegant way formatrix/data frame/zoo?
>
> mat> 1 2 3
> 4 5 6
> 7 8 9
>
> vector> 1
> 2
> 3
>
>
> result> 0 1 2
> 2 3 4
> 4 5 6
>
> ie
> 1-1 2-1 3-1
> 4-2 5-2 6-2
> 7-3 8-3 9-3
>
> Thanks in advance.
>
> _________________________________________________________________
>
>
> 08
> [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>
>
Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
Henrique Dallazuanna
2008-Mar-02 17:56 UTC
[R] elegant way to minus on each row of a matrix
Try this: sweep(mat, 1, vec) On 02/03/2008, Bo Zhou <bozhou1981 at hotmail.com> wrote:> > How to do this in an elegant way formatrix/data frame/zoo? > > mat> 1 2 3 > 4 5 6 > 7 8 9 > > vector> 1 > 2 > 3 > > > result> 0 1 2 > 2 3 4 > 4 5 6 > > ie > 1-1 2-1 3-1 > 4-2 5-2 6-2 > 7-3 8-3 9-3 > > Thanks in advance. > > _________________________________________________________________ > > > 08 > [[alternative HTML version deleted]] > > ______________________________________________ > 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
Hi Mark, (CC'ing r-help) Only need to change the parameter from 1 to 2 after that it worked great. Thanks> t1=matrix(1:15,5,3)> t1[,1] [,2] [,3] [1,] 1 6 11 [2,] 2 7 12 [3,] 3 8 13 [4,] 4 9 14 [5,] 5 10 15> t2=1:5> t2[1] 1 2 3 4 5> apply(t1,2, function(x) x - t2)[,1] [,2] [,3] [1,] 0 5 10 [2,] 0 5 10 [3,] 0 5 10 [4,] 0 5 10 [5,] 0 5 10>> Date: Sun, 2 Mar 2008 12:51:53 -0500 > From: markleeds@verizon.net > Subject: RE: [R] elegant way to minus on each row of a matrix > To: bozhou1981@hotmail.com > > try result<-apply(mat,1, function(.row) .row - vector) but I don't have R > here so make sure it works. > > -----Original Message----- > From: r-help-bounces@r-project.org [mailto:r-help-bounces@r-project.org] On > Behalf Of Bo Zhou > Sent: Sunday, March 02, 2008 12:43 PM > To: r-help@r-project.org > Subject: [R] elegant way to minus on each row of a matrix > > > How to do this in an elegant way formatrix/data frame/zoo? > > mat> 1 2 3 > 4 5 6 > 7 8 9 > > vector> 1 > 2 > 3 > > > result> 0 1 2 > 2 3 4 > 4 5 6 > > ie > 1-1 2-1 3-1 > 4-2 5-2 6-2 > 7-3 8-3 9-3 > > Thanks in advance. > > _________________________________________________________________ > > > 08 > [[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. >_________________________________________________________________ 08 [[alternative HTML version deleted]]