[R] element-by-element comparison

Enrico Schumann enricoschumann at yahoo.de
Sun Oct 30 09:52:58 CET 2011


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/



More information about the R-help mailing list