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.