如何排序“相等”浮点值

时间:2017-07-16 17:07:03

标签: r sorting floating-point

我需要一个排序函数,使用all.equal()来处理相等的数字,就像它们是相等的一样。

例如,如果你这样做:

library(plyr)
a = sample(c(0.8, 0.7), 30, replace=TRUE)
b = sample(c(1.1, 1.2), 30, replace=TRUE)
df = data.frame(a)
df$b = b
df$sum = a + b
arrange(df, desc(sum))

所有(0.8,1.1)对将在上面对(0.7,1.2)排序,这不是我想要的 - 我希望随机顺序保存在总和为1.9的事物类别中。

这是因为

> 1.1 + 0.8 > 1.2 + 0.7
[1] TRUE

> 1.1 + 0.8 == 1.2 + 0.7
[1] FALSE

我知道这是浮点数如何工作的结果,并且R有一个函数all.equal()来测试“真正的”相等性。例如

> all.equal(0.8+1.1, 0.7+1.2)
[1] TRUE

所以我正在寻找一种排序函数或一种排序方式,其行为与all.equal()相同,而不是==

编辑清楚这不是其他问题的重复。

0 个答案:

没有答案