R - 范围中的有效数值返回为False?

时间:2016-10-28 18:00:20

标签: r

我看过Why are these numbers not equal?并且有帮助,但这里没有解决这个问题。我不是在问为什么两个数字不同,我问为什么0.010.99范围内的每个数字都没有区别,除了 {{1} }。链接线程中接受的解决方案(下面)仍然没有区分有问题的两个值(它说它们相同),所以即使这是我的问题,它也是没有解释为什么价值实际上是不同的,也没有解决这里的问题。

处理接受数值作为参数的函数。此数值的有效范围是0.100.01。出于某种原因,0.99在有效范围(0.10)中作为而不是返回,即使它是?

FALSE

这很好用,val.range = seq(from = 0.01, to = 0.99, by = 0.01) 中的值都是data.frame

TRUE

但是,这会返回x = data.frame() for (i in seq(0.01, 0.99, by = 0.01)){ x = rbind(x, i %in% val.range) } - 即使FALSE显然位于0.10

val.range

这似乎只是0.10 %in% val.range 的问题 - 尝试范围内的其他值似乎工作正常并返回0.10。有什么想法在这里发生什么?

修改

阅读Why are these numbers not equal?后,我尝试了以下可接受的解决方案:

TRUE

评估为isTRUE(all.equal(0.10, val.range[10])) 。但如果TRUE等于0.10中的0.10,那么上面的结果应该是 val.range[10] < em>,但他们不是。

解决方案

由于链接的线程没有回答这个问题,@ rawr非常友好地在评论中提供代码来解决差异:

TRUE

我应用的解决方案舍入了format(c(0.10, val.range[10]), digits = 22) 中的值和数值:

val.range

然后评估为val.range = round(seq(from = 0.01, to = 0.99, by = 0.01), digits = 2) temp = round(0.10, digits = 2) temp %in% val.range

迈克尔

0 个答案:

没有答案