Hi, I have a vector and a matrix. For example, A = [ 12 3 4]; B = [ 4 13 10 2 4 8]; I am comparing A to each column of B using A>B[,ii], so the expected result is C = [ 1 0 0 1 0 0]; I am looking for a way to do this quickly instead of going through the for loop, but haven't had any luck yet? Any advice is appreciated. Thank you very much. Wendy -- View this message in context: http://r.789695.n4.nabble.com/element-by-element-comparison-tp3952301p3952301.html Sent from the R help mailing list archive at Nabble.com.
On 10/30/2011 02:51 PM, Wendy wrote:> Hi, > > I have a vector and a matrix. For example, > > A = [ > 12 > 3 > 4]; > > B = [ > 4 13 > 10 2 > 4 8]; > > I am comparing A to each column of B using A>B[,ii], so the expected result > is > > C = [ > 1 0 > 0 1 > 0 0]; > > I am looking for a way to do this quickly instead of going through the for > loop, but haven't had any luck yet? Any advice is appreciated.Hi Wendy, You probably mean something like this: apply(B,2,`<`,A) which means roughly "To each column of B, apply the function `<` using A as the comparison values" You will get a matrix of TRUE/FALSE values that are pretty much equivalent to your 0/1 values. Note that there are quite a few '*apply' functions and 'apply' is only guaranteed to work on arrays and matrices. Jim
Given that you want to compare columns, you can just do: A > B If you wanted to compare rows, then it is more troublesome. One approach would be: rep(A, each=nrow(B)) > B On 30/10/2011 03:51, Wendy wrote:> Hi, > > I have a vector and a matrix. For example, > > A = [ > 12 > 3 > 4]; > > B = [ > 4 13 > 10 2 > 4 8]; > > I am comparing A to each column of B using A>B[,ii], so the expected result > is > > C = [ > 1 0 > 0 1 > 0 0]; > > I am looking for a way to do this quickly instead of going through the for > loop, but haven't had any luck yet? Any advice is appreciated. > > Thank you very much. > > Wendy > > > > > > > -- > View this message in context: http://r.789695.n4.nabble.com/element-by-element-comparison-tp3952301p3952301.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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. >-- Patrick Burns pburns at pburns.seanet.com twitter: @portfolioprobe http://www.portfolioprobe.com/blog http://www.burns-stat.com (home of 'Some hints for the R beginner' and 'The R Inferno')
On 30.10.2011 04:51, Wendy wrote:> Hi, > > I have a vector and a matrix. For example, > > A = [ > 12 > 3 > 4]; > > B = [ > 4 13 > 10 2 > 4 8]; > > I am comparing A to each column of B using A>B[,ii], so the expected result > is > > C = [ > 1 0 > 0 1 > 0 0];This list is about R rather than Matlab dialects. For R: A>B gives logical values and, e.g., apply(A>B, 2, as.integer) converts to integer. Uwe Ligges> I am looking for a way to do this quickly instead of going through the for > loop, but haven't had any luck yet? Any advice is appreciated. > > Thank you very much. > > Wendy > > > > > > > -- > View this message in context: http://r.789695.n4.nabble.com/element-by-element-comparison-tp3952301p3952301.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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.