7

可能重复:
R中的数字比较困难

大家好,

根据“R Inferno”论文。我现在在 R 地狱的第一圈。这是异教徒期望 0.1 == 0.3/3 的地方。Paper 建议all.equal在这种情况下使用函数,但是我需要检查 ">=" 或 "<=" 条件。使用当前示例失败:

> .1 >= .3/3
[1] TRUE
> .1 <= .3/3
[1] FALSE

是否有与 all.equal 类似的函数来检查不等式?

谢谢,

伊利亚

4

4 回答 4

10

的主要测试all.equal是是否abs(x-y) < tolerance为一些值xy一些小tolerance。等效不等式测试将检查:

x <= y:         x-y < tolerance
x < y:          x-y < -tolerance
x >= y:         x-y > -tolerance
x > y:          x-y > tolerance
于 2010-11-02T15:30:08.807 回答
9

请参阅以下问题:

一般来说,您可以通过根据上面的第二个链接包含一个容差级别来处理这个问题。

于 2010-11-02T15:26:02.037 回答
6

请参阅R 常见问题解答条目为什么 R 认为这些数字不相等以及其中的引用。

于 2010-11-02T15:20:25.803 回答
4

您可以尝试明智地使用zapsmall()which 似乎可以提供您正在寻找的行为。我不知道这是否适用于所有情况。例如,

.1 >= zapsmall(.3/3)
[1] TRUE
> .1 <= zapsmall(.3/3)
[1] TRUE
于 2010-11-02T15:28:45.557 回答