Re: [R] Equivalent to matlab .* operator in R

2014-11-20 Thread peter dalgaard
Not sure you really want the overhead of sweep() for this, but logically, you want z as a vector or maybe 1d array since sweep() is designed as complimentary to apply(). I.e., you can sweep out marginal means using, say, m - matrix(c(5, 7, 9, 13), 2) colmean - apply(m, 2, mean) sweep(m, 2,

[R] Equivalent to matlab .* operator in R

2014-11-19 Thread Ruima E.
Hi, I have this: y = matrix(cbind(c(0, 0.5, 1),c(0, 0.5, 1)),ncol=2) z = matrix(c(12, -6),ncol=2) In matlab I would do this y .* x I would get this in matlab ans 0-0 6-3 12 -6 What is the equivalent in R? Thanks [[alternative HTML version deleted]]

Re: [R] Equivalent to matlab .* operator in R

2014-11-19 Thread Ruima E.
Thank you Chel Hee. Isn't there a simpler way to do so? On Wed, Nov 19, 2014 at 3:35 PM, Chel Hee Lee chl...@mail.usask.ca wrote: y = matrix(cbind(c(0, 0.5, 1),c(0, 0.5, 1)),ncol=2) z = matrix(c(12, -6),ncol=2) t(apply(y, 1, function(x) x*z)) [,1] [,2] [1,]00 [2,]6 -3

Re: [R] Equivalent to matlab .* operator in R

2014-11-19 Thread Berend Hasselman
On 19-11-2014, at 15:22, Ruima E. ruimax...@gmail.com wrote: Hi, I have this: y = matrix(cbind(c(0, 0.5, 1),c(0, 0.5, 1)),ncol=2) z = matrix(c(12, -6),ncol=2) In matlab I would do this y .* x I would get this in matlab ans 0-0 6-3 12 -6 What is the equivalent

Re: [R] Equivalent to matlab .* operator in R

2014-11-19 Thread Ista Zahn
On Wed, Nov 19, 2014 at 9:50 AM, Berend Hasselman b...@xs4all.nl wrote: On 19-11-2014, at 15:22, Ruima E. ruimax...@gmail.com wrote: Hi, I have this: y = matrix(cbind(c(0, 0.5, 1),c(0, 0.5, 1)),ncol=2) z = matrix(c(12, -6),ncol=2) In matlab I would do this y .* x I would get this in

Re: [R] Equivalent to matlab .* operator in R

2014-11-19 Thread Jeff Newmiller
When your matrices are the same size, the * operator does what you want. The problem is that you have to make a conforming version of z before you can use that operator. y*matrix(rep(z,3),ncol=2,byrow=TRUE) or y*matrix(rep(z,each=3),ncol=2) To interpret this, just keep in mind that matrices

Re: [R] Equivalent to matlab .* operator in R

2014-11-19 Thread Chel Hee Lee
Another (simpler) way that I can think is that y * matrix(rep(z,3), ncol=ncol(y), byrow=TRUE) [,1] [,2] [1,]00 [2,]6 -3 [3,] 12 -6 I hope this helps. Chel Hee Lee On 14-11-19 08:43 AM, Ruima E. wrote: Thank you Chel Hee. Isn't there a simpler way to do so? On

Re: [R] Equivalent to matlab .* operator in R

2014-11-19 Thread Chel Hee Lee
y = matrix(cbind(c(0, 0.5, 1),c(0, 0.5, 1)),ncol=2) z = matrix(c(12, -6),ncol=2) t(apply(y, 1, function(x) x*z)) [,1] [,2] [1,]00 [2,]6 -3 [3,] 12 -6 I hope this helps. Chel Hee Lee On 14-11-19 08:22 AM, Ruima E. wrote: Hi, I have this: y = matrix(cbind(c(0, 0.5,

Re: [R] Equivalent to matlab .* operator in R

2014-11-19 Thread Dénes Tóth
Hi, It is better to use sweep() for these kinds of problems, see ?sweep y - matrix(cbind(c(0, 0.5, 1),c(0, 0.5, 1)),ncol=2) z - matrix(c(12, -6),ncol=2) sweep(y, 2, z, *) Best, Denes On 11/19/2014 03:50 PM, Berend Hasselman wrote: On 19-11-2014, at 15:22, Ruima E. ruimax...@gmail.com

Re: [R] Equivalent to matlab .* operator in R

2014-11-19 Thread Dénes Tóth
Hi, just for the records, your original code seems incorrect, see inline. On 11/19/2014 03:22 PM, Ruima E. wrote: Hi, I have this: y = matrix(cbind(c(0, 0.5, 1),c(0, 0.5, 1)),ncol=2) z = matrix(c(12, -6),ncol=2) In matlab I would do this y .* x Here you wrote 'x' which I guess refers to

Re: [R] Equivalent to matlab .* operator in R

2014-11-19 Thread Benno Pütz
It can be simplified a bit, though, as the second operand in the multiplication does not need to be a matrix: y * rep(z,each=3) On 19 Nov 2014, at 16:24 , Jeff Newmiller jdnew...@dcn.davis.ca.us wrote: When your matrices are the same size, the * operator does what you want.

Re: [R] Equivalent to matlab .* operator in R

2014-11-19 Thread Boris Steipe
Or ... if you mean simpler as in less to type, you can define your own binary operator by enclosing it in % signs, and the assign any of the previously proposed solutions, e.g. y = matrix(cbind(c(0, 0.5, 1),c(0, 0.5, 1)),ncol=2) z = matrix(c(12, -6),ncol=2) '%.*%' - function(a,b) {a * rep(b,

Re: [R] Equivalent to matlab .* operator in R

2014-11-19 Thread John C Frain
What you have written does not work in Matlab - y = [0 0;0.5 0.5;1 1] y = 0 0 0.50000.5000 1.1. z = [12, -6] z = 12-6 . y .* z Error using .* Matrix dimensions must agree. When dimensions agree it you get the same result in R as in