检查向量R中是否存在元素

时间:2016-11-10 12:42:12

标签: r seq

我正在与R的一些奇怪行为作斗争。有人可以解释发生了什么吗?

在以下示例中,check在第一个示例中为false,在第二个示例中为true。为什么seqc不同?

by <- 0.1
percentage <- 60

probs <- seq(0,1,by)
checkValues <- probs * 100
check <- percentage %in% checkValues

probs <- c(0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1)
checkValues <- probs * 100
check <- percentage %in% checkValues

它变得更加怪异,好像我设置by <- 0.25percentage <- 75 check都是真的

1 个答案:

答案 0 :(得分:2)

你已成为floating point error的受害者:

p1 <- seq(0,1,0.1)
p2 <- c(0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1)
> identical(p1, p2)
[1] FALSE
> all.equal(p1, p2)
[1] TRUE