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.