相关疑难解决方法(0)

R中的数字比较难度

我试图比较R中的两个数字作为if语句条件的一部分:

(a-b) >= 0.5

在这个特定的例子中,a = 0.58和b = 0.08 ......但仍然(a-b) >= 0.5是假的.我知道使用==确切数字比较的危险,这似乎有关:

(a - b) == 0.5) 是假的,而

all.equal((a - b), 0.5) 是真的.

我能想到的唯一解决方案是有两个条件:(a-b) > 0.5 | all.equal((a-b), 0.5).这有效,但这真的是唯一的解决方案吗?我应该=永远地宣誓比较运营商的家庭吗?

为清晰起见编辑:我知道这是一个浮点问题.更重要的是,我要问的是:我该怎么做呢?什么是处理R中大于或等于比较的合理方法,因为>=它不能真正被信任?

floating-point comparison r comparison-operators r-faq

42
推荐指数
4
解决办法
2万
查看次数

10
推荐指数
2
解决办法
2859
查看次数

R:all.equal 与 all

我试图使用 all 和 all.equal 来测试两个向量是否相等,但它们给出了不同的结果,我不确定为什么。

> x = seq(0,1,by=0.2)
> x
[1] 0.0 0.2 0.4 0.6 0.8 1.0
 > y = c(0.0, 0.2, 0.4, 0.6, 0.8, 1.0)
> all(x == y)
[1]  FALSE
> all.equal(x, y)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

r

3
推荐指数
1
解决办法
1374
查看次数