我正在与R的一些奇怪行为作斗争。有人可以解释发生了什么吗?
在以下示例中,check
在第一个示例中为false,在第二个示例中为true。为什么seq
与c
不同?
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.25
和percentage <- 75
check
都是真的
答案 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