is.element()在R中没有正确检查(?)

时间:2014-06-01 14:41:34

标签: r

我在这里遇到了一个奇怪的问题:

setProgress <- function(total) {
    ticks <- seq(.01, 1, by = 0.01) * total
    return(ticks)
}

ticks <- setProgress(10000)
is.element(100, ticks)
is.element(205, ticks)
# ...
is.element(700, ticks)

如果您运行该代码,您将获得:

显然,100是向量ticks的一部分。 - &GT; TRUE
205显然不是。 - &GT; FALSE
700 ticks的一部分,但我收到了输出FALSE

这里发生了什么?

干杯, 马丁

1 个答案:

答案 0 :(得分:4)

这是一个舍入错误。设置options(digits=22)并查看ticks。您将找到此值:7000.0000000000009094947

错误是因为0.7无法准确表示为二进制浮点数。

您可以使用此定义修复它:

 setProgress <- function(total) { seq(total/100, total, length=100) }