gpt4 book ai didi

r - R中的数值比较困难

转载 作者:行者123 更新时间:2023-12-03 07:03:42 25 4
gpt4 key购买 nike

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

(a-b) >= 0.5

在此特定实例中,a = 0.58 且 b = 0.08...但 (a-b) >= 0.5 为 false。我知道使用 == 进行精确数字比较的危险,这似乎是相关的:

(a - b) == 0.5) 为 false,而

all.equal((a - b), 0.5) 为 true。

我能想到的唯一解决方案是有两个条件:(a-b) > 0.5 | all.equal((a-b), 0.5)。这可行,但这真的是唯一的解决方案吗?我应该永远放弃 = 系列比较运算符吗?

编辑清楚:我知道这是一个浮点问题。更根本的是,我要问的是:我该怎么办?既然 >= 不能真正被信任,那么处理 R 中大于或等于比较的明智方法是什么?

最佳答案

对于此类事情,我从来都不是 all.equal 的粉丝。在我看来,宽容有时会以一种神秘的方式发挥作用。为什么不直接检查是否大于小于 0.05 的容差

tol = 1e-5

(a-b) >= (0.05-tol)

总的来说,在没有舍入且仅使用传统逻辑的情况下,我发现直接逻辑比 all.equal 更好

如果x == yx-y == 0。也许x-y不完全是0,所以对于这种情况我使用

abs(x-y) <= tol

无论如何,您都必须为 all.equal 设置容差,这比 all.equal 更紧凑、更简单。

关于r - R中的数值比较困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2769510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com