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.
element-by-element comparison
7 messages · wendy, Jim Lemon, Tsjerk Wassenaar +3 more
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
Hi Wendy,
Most of the binary operators can deal with matrices and vectors natively:
A<-c(12,3,4)
B<-matrix(c(4,10,4,13,2,8),3,2)
B
[,1] [,2]
[1,] 4 13
[2,] 10 2
[3,] 4 8
B<A
[,1] [,2]
[1,] TRUE FALSE
[2,] FALSE TRUE
[3,] FALSE FALSE
Cheers,
Tsjerk
On Sun, Oct 30, 2011 at 8:55 AM, Jim Lemon <jim at bitwrit.com.au> wrote:
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
______________________________________________ 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.
Tsjerk A. Wassenaar, Ph.D. post-doctoral researcher Molecular Dynamics Group * Groningen Institute for Biomolecular Research and Biotechnology * Zernike Institute for Advanced Materials University of Groningen The Netherlands
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')
Hi, To compare row wise is merely to compare column wise using the transpose matrix: t(B) < A or t(t(B)<A) if the result needs to be a matrix with dimensions equal to B. Cheers, Tsjerk
On Sun, Oct 30, 2011 at 9:44 AM, Patrick Burns <pburns at pburns.seanet.com> wrote:
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')
______________________________________________ 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.
Tsjerk A. Wassenaar, Ph.D. post-doctoral researcher Molecular Dynamics Group * Groningen Institute for Biomolecular Research and Biotechnology * Zernike Institute for Advanced Materials University of Groningen The Netherlands
The recycling rule should apply here (see 'An Introduction to R', Sec. 5.4.1; and ?Comparison, under 'Value'). x <- -5:5 A <- cbind(x, x, x) vec <- numeric(length(x)) A > vec ### recycling apply(A,2,`>`,vec) ### using apply vec <- numeric(11) + 3; vec[1] <- -6 A > vec ### recycling apply(A,2,`>`,vec) ### using apply It should be faster than apply, but then apply seems much clearer. Regards, Enrico Am 30.10.2011 08:55, schrieb Jim Lemon:
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
______________________________________________ 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.
Enrico Schumann Lucerne, Switzerland http://nmof.net/
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.