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

Check if element exists in vector R

我正在与 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 都是真的

您已成为 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