Re: [R] vector comparison

From: Michael Prince <michaelprnc_at_gmail.com>
Date: Thu, 05 Jun 2008 14:07:43 +0200

Hello Karin

This is your code :

a = c("a")
b = c("b","c")
c = c("c","b")
if (a==a) show("yes") else show("blah")

if (a==b) show("yes") else show("blah")
if (b==c) show("yes") else show("blah")

Have a look at the conditions (a==b) and (b==c)

> a==b

[1] FALSE FALSE
> b==c

[1] FALSE FALSE They are size 2.
I think R takes the first logical value. That's why you get the warning.

I hope this helps.

2008/6/5 Karin Lagesen <karinlag_at_studmed.uio.no>:

>
> I know this is fairly basic, but I must have somehow missed it in the
> manuals.
>
> I have two vectors, often of unequal length. I would like to compare
> them for identity. Order of elements do not matter, but they should
> contain the same.
>
> I.e: I want this kind of comparison:
>
> > if (1==1) show("yes") else show("blah")
> [1] "yes"
> > if (1==2) show("yes") else show("blah")
> [1] "blah"
> >
>
> Only replace the numbers with for instance the vectors
>
> > a = c("a")
> > b = c("b","c")
> > c = c("c","b")
>
>
> Now, I realize I only get a warning when comparing things, but this to
> me means that I am not doing it correctly:
>
> > if (a==a) show("yes") else show("blah")
> [1] "yes"
> > if (a==b) show("yes") else show("blah")
> [1] "blah"
> Warning message:
> In if (a == b) show("yes") else show("blah") :
> the condition has length > 1 and only the first element will be used
> >
> > if (b == c) show("yes") else show("blah")
> [1] "blah"
> Warning message:
> In if (b == c) show("yes") else show("blah") :
> the condition has length > 1 and only the first element will be used
> >
>
> I have also tried the %in% comparator, but that one throws warnings too:
>
> > if (b %in% c) show("yes") else show("blah")
> [1] "yes"
> Warning message:
> In if (b %in% c) show("yes") else show("blah") :
> the condition has length > 1 and only the first element will be used
> >
> > if (c %in% c) show("yes") else show("blah")
> [1] "yes"
> Warning message:
> In if (c %in% c) show("yes") else show("blah") :
> the condition has length > 1 and only the first element will be used
> >
>
> So, how is this really supposed to be done?
>
> Thanks!
>
> Karin
>
> ______________________________________________
> 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.
>

        [[alternative HTML version deleted]]



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. Received on Thu 05 Jun 2008 - 14:05:33 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 05 Jun 2008 - 14:30:37 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive