【问题标题】:Odd Behavior With Sequences [duplicate]序列的奇怪行为[重复]
【发布时间】:2016-08-04 19:34:20
【问题描述】:

我在一个简单的条件下遇到了一些非常不寻常的结果,并且真的需要其他人在他们的机器上运行它以进行健全性检查。代码如下:

mySEQ <- seq(0.1, 1.0, by = 0.1)
for (s in c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0)) { print((s + .1) %in% mySEQ) }
mySEQ[3] == 0.3

结果:

> mySEQ <- seq(0.1, 1.0, by = 0.1)
> for (s in c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0)) { print(s %in% mySEQ) }
[1] TRUE
[1] TRUE
[1] FALSE
[1] TRUE
[1] TRUE
[1] TRUE
[1] FALSE
[1] TRUE
[1] TRUE
[1] TRUE
> mySEQ[3] == 0.3
[1] FALSE
> mySEQ[3]
[1] 0.3

我对为什么它们不都打印出 TRUE 感到非常困惑。好像 0.3 和 0.7 有问题。我更新了 R 和我所有的包,但只需要其他人运行它来检查它是否只有我。这似乎与seq 函数有关。谢谢。

【问题讨论】:

    标签: r conditional sequence operator-keyword


    【解决方案1】:

    这与 R 中如何处理浮点数有关。有关详细信息,您可以阅读“The R Inferno”的第一章:

    http://www.burns-stat.com/pages/Tutor/R_inferno.pdf

    要回答示例中的问题,请使用 all.equal 而不是 == 来检查浮点数的相等性。

    【讨论】:

    • 有趣的东西。谢谢!
    猜你喜欢
    • 2016-01-28
    • 2018-11-22
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 2015-07-26
    相关资源
    最近更新 更多