我有一个带有 var 的数字列的 pan 。
> class(pan$variable)
[1] "numeric"
它有一组0.8到0.9的值:
> unique(pan$variable)
[1] 0.800 0.825 0.850 0.875 0.900
但是,当我尝试在 var 的特定值上过滤 pan 时,它仅适用于某些值!
预期行为:
> filter(pan,variable == 0.8)
# A tibble: 510 x 20
异常行为:
> filter(pan,variable == 0.825)
# A tibble: 0 x 20
事实上,在这种情况下,我只得到0.8,0.875和0.9的结果!过滤器不会为0.825和0.85带来任何结果。
> filter(pan,variable == 0.85)
# A tibble: 0 x 20
我尝试重启我的RStudio会话,但行为没有变化。我已经构建了自己的“过滤器”功能,并且异常行为仍在继续:
sum <- 0
for (i in 1:nrow(pan)) {
if (pan$variable[i] == 0.8) {
sum <- sum + 1
}
}
print(sum)
当我为0.8,0.875和0.9的值运行这个小过滤器函数时,它返回值〜510,如预期的那样,但是对于0.825和0.85的值,它返回0。
> pan$variable[511]
[1] 0.825
> pan$variable[511]==0.825
[1] FALSE
有没有人在R中遇到过这种奇怪的行为?我错过了什么,因为我已经确认 var 的类是数字,但是对于某些值不会测试为TRUE?