element-by-element comparison
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/