Hi,
Possibly R FAQ 7.31
vec1[180]
#[1] 18
?vec1[180]-18
#[1] 3.552714e-15
vec1[round(vec1,2)%in%vec2]
# [1]? 2? 4? 6? 8 10 12 14 16 18 20
A.K.
----- Original Message -----
From: Finlay Scott <drfinlayscott at gmail.com>
To: r-help at r-project.org
Cc:
Sent: Friday, August 23, 2013 11:00 AM
Subject: [R] Unexpected behaviour with seq() and %in%
Hi,
During the course of putting together a function I came across some
unexpected behaviour when using seq() and %in%.
I am creating two numeric vectors using seq(), and then using %in% to find
the values in one vector that are in the other. Sometimes all the values
are found, but sometimes a value is not found. It seems that the behaviour
is inconsistent and I don't understand why.
Below are some reproducible examples:
vec1 <- seq(from = 0.1, to = 20, by = 0.1)
vec2 <- seq(from = 2, to = 20, by = 2)
vec1[vec1 %in% vec2]
[1]? 2? 4? 6? 8 10 12 14 16 20
The value 18 is not found.
Starting vec1 at 0.2:
vec1 <- seq(from = 0.2, to = 20, by = 0.1)
vec2 <- seq(from = 2, to = 20, by = 2)
vec1[vec1 %in% vec2]
[1]? 2? 4? 8 10 12 14 16 18 20
Now the value 6 is not found.
Starting vec1 at 0.5:
vec1 <- seq(from = 0.5, to = 20, by = 0.1)
vec2 <- seq(from = 2, to = 20, by = 2)
vec1[vec1 %in% vec2]
[1]? 2? 4? 6? 8 10 12 14 16 18 20
Now all the values are found.
Can someone please explain what is happening? Why should the starting value
of vec1 make a difference?
Thanks
Finlay
R version info:
platform? ? ? x86_64-pc-linux-gnu
arch? ? ? ? ? x86_64
os? ? ? ? ? ? linux-gnu
system? ? ? ? x86_64, linux-gnu
version.string R version 3.0.1 (2013-05-16)
??? [[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.