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@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/

______________________________________________
R-help@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.

Reply via email to