[R] element-by-element comparison

2011-10-30 Thread Wendy
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 AB[,ii], so the expected result
is 

C = [
10
01
00];

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


Re: [R] element-by-element comparison

2011-10-30 Thread 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 AB[,ii], so the expected result
is

C = [
10
01
00];

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.


Re: [R] element-by-element comparison

2011-10-30 Thread Tsjerk Wassenaar
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,]   102
[3,]48

BA

  [,1]  [,2]
[1,]  TRUE FALSE
[2,] FALSE  TRUE
[3,] FALSE FALSE

Cheers,

Tsjerk

On Sun, Oct 30, 2011 at 8:55 AM, Jim Lemon j...@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 AB[,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.




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

__
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.


Re: [R] element-by-element comparison

2011-10-30 Thread Patrick Burns

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 AB[,ii], so the expected result
is

C = [
10
01
00];

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@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
pbu...@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@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.


Re: [R] element-by-element comparison

2011-10-30 Thread Tsjerk Wassenaar
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 pbu...@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 AB[,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@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
 pbu...@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@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

__
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.


Re: [R] element-by-element comparison

2011-10-30 Thread Enrico Schumann


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 AB[,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.


Re: [R] element-by-element comparison

2011-10-30 Thread Uwe Ligges



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 AB[,ii], so the expected result
is

C = [
10
01
00];



This list is about R rather than Matlab dialects.

For R:

AB

gives logical values and, e.g.,

 apply(AB, 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@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.


__
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.