首先,我将在这个问题的开头说,我知道使用来测试双打的相等性是一个坏主意==
,我应该改用isTRUE(all.equal())
,但是我遇到了一些不是四舍五入结果的奇怪行为:
设置:
> a <- c(0.2, 0.4, 0.6)
> b <- a - 0.3
[1] -0.1 0.1 0.3
> c <- abs(b)
[1] 0.1 0.1 0.3
现在到奇怪的行为:
which(a == 0.4) # This works fine.
which(b == 0.1) # integer(0) - no good.
which(b == 0.3) # But this works fine?
which(c == 0.3) # Also fine
which(c == 0.1) # integer(0) - no good.
c[1] == c[2] # FALSE
我不知道为什么它在某些情况下可以正常工作,但在其他情况下却不行?