From: Michael Prince <michaelprnc_at_gmail.com>

Date: Thu, 05 Jun 2008 14:07:43 +0200

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

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

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

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