Majid Iravani
2006-Oct-13 11:33 UTC
[R] multiply two matrixes with the different dimension column by column
Dear all, I would like to multiply two matrixes with the different dimension column by column. Let make an example: If I have two matrixes "X" and "Y"as follow: X<- matrix(1:12, nrow=4, ncol=3, dimnames=list(c("A","B","C","D"), c("stage1","stage2","stage3"))) Y<- matrix(1:28, nrow=4, ncol=7, dimnames=list(c("A","B","C","D"), c("site1","site2","site3","site4","site5", "site6","site7"))) I would like to multiply first column of the "Y"matrix (site1) to the all of the columns in "X"matrix. Then, the product will be three new columns (for example:site1stage1, site1stage2 and site1stage3 or something like this) which I want to add to "Y"matrix. As my site (Y) dataset has too many columns, it's not easy to do it in Excel and I'm looking for a command in R to prepare a new data frame for more analysis. So I would greatly appreciate if anybody can help me in this case. Thanks in advance Majid -------------------------------------------------------------------------------- Majid Iravani PhD Student Swiss Federal Research Institute WSL Research Group of Vegetation Ecology Z?rcherstrasse 111 CH-8903 Birmensdorf Switzerland Phone: +41-1-739-2693 Fax: +41-1-739-2215 Email: Majid.iravani at wsl.ch http://www.wsl.ch/staff/majid.iravani/
Alberto Monteiro
2006-Oct-13 12:36 UTC
[R] multiply two matrixes with the different dimension column by column
Majid Iravani wrote:> > I would like to multiply two matrixes with the different dimension > column by column. Let make an example: If I have two matrixes "X" > and "Y"as follow: > > X<- matrix(1:12, nrow=4, ncol=3, dimnames=list(c("A","B","C","D"), > c("stage1","stage2","stage3"))) > Y<- matrix(1:28, nrow=4, ncol=7, dimnames=list(c("A","B","C","D"), > c("site1","site2","site3","site4","site5", "site6","site7"))) >t(X) %*% Y will give something; I don't know if this is what you want. Alberto Monteiro
Gabor Grothendieck
2006-Oct-13 12:58 UTC
[R] multiply two matrixes with the different dimension column by column
Here are two ways: 1. Using inner from: http://tolstoy.newcastle.edu.au/R/help/05/04/3709.html try: array(inner(t(X), Y, "*"), c(4, 21)) 2. using model.matrix get all terms and interactions and eliminate the non-interactions: model.matrix(~ X * Y - X - Y - 1) On 10/13/06, Majid Iravani <majid.iravani at wsl.ch> wrote:> Dear all, > I would like to multiply two matrixes with the different dimension column > by column. Let make an example: > If I have two matrixes "X" and "Y"as follow: > > X<- matrix(1:12, nrow=4, ncol=3, dimnames=list(c("A","B","C","D"), > c("stage1","stage2","stage3"))) > Y<- matrix(1:28, nrow=4, ncol=7, dimnames=list(c("A","B","C","D"), > c("site1","site2","site3","site4","site5", "site6","site7"))) > > I would like to multiply first column of the "Y"matrix (site1) to the all > of the columns in "X"matrix. Then, the product will be three new columns > (for example:site1stage1, site1stage2 and site1stage3 or something like > this) which I want to add to "Y"matrix. As my site (Y) dataset has too many > columns, it's not easy to do it in Excel and I'm looking for a command in R > to prepare a new data frame for more analysis. So I would greatly > appreciate if anybody can help me in this case. > Thanks in advance > Majid > -------------------------------------------------------------------------------- > Majid Iravani > PhD Student > Swiss Federal Research Institute WSL > Research Group of Vegetation Ecology > Z?rcherstrasse 111 CH-8903 Birmensdorf Switzerland > Phone: +41-1-739-2693 > Fax: +41-1-739-2215 > Email: Majid.iravani at wsl.ch > http://www.wsl.ch/staff/majid.iravani/ > > ______________________________________________ > R-help at stat.math.ethz.ch 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. >
Alex Brown
2006-Oct-13 13:00 UTC
[R] multiply two matrixes with the different dimension column by column
apply(Y, 2, function(y)list(y*X)) On 13 Oct 2006, at 12:33, Majid Iravani wrote:> Dear all, > I would like to multiply two matrixes with the different dimension > column > by column. Let make an example: > If I have two matrixes "X" and "Y"as follow: > > X<- matrix(1:12, nrow=4, ncol=3, dimnames=list(c("A","B","C","D"), > c("stage1","stage2","stage3"))) > Y<- matrix(1:28, nrow=4, ncol=7, dimnames=list(c("A","B","C","D"), > c("site1","site2","site3","site4","site5", "site6","site7"))) > > I would like to multiply first column of the "Y"matrix (site1) to > the all > of the columns in "X"matrix. Then, the product will be three new > columns > (for example:site1stage1, site1stage2 and site1stage3 or something > like > this) which I want to add to "Y"matrix. As my site (Y) dataset has > too many > columns, it's not easy to do it in Excel and I'm looking for a > command in R > to prepare a new data frame for more analysis. So I would greatly > appreciate if anybody can help me in this case. > Thanks in advance > Majid > ---------------------------------------------------------------------- > ---------- > Majid Iravani > PhD Student > Swiss Federal Research Institute WSL > Research Group of Vegetation Ecology > Z?rcherstrasse 111 CH-8903 Birmensdorf Switzerland > Phone: +41-1-739-2693 > Fax: +41-1-739-2215 > Email: Majid.iravani at wsl.ch > http://www.wsl.ch/staff/majid.iravani/ > > ______________________________________________ > R-help at stat.math.ethz.ch 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.