0

我有两列包含数据。在比较这些列时,我得到FALSE了这一行的回报,这让我很困惑。

dat[82,"UG_accept_avg_total.x"]
## [1] 1.842105
dat[82,"UG_accept_avg_total.y"]
## [1] 1.842105
dat[82,"UG_accept_avg_total.x"]==dat[82,"UG_accept_avg_total.y"]
## [1] FALSE

我阅读了这个问题的答案,它解释了为什么会出现我的问题,但答案对我没有多大帮助,因为:

all.equal(dat[82,"UG_accept_avg_total.x"],dat[82,"UG_accept_avg_total.y"])
## "Mean relative difference: 1.427714e-07"
isTRUE(all.equal(dat[82,"UG_accept_avg_total.x"],dat[82,"UG_accept_avg_total.y"]))
## [1] FALSE

我可以去掉小数点后的一些数字,因为 3 可能就足够了,但是检查我的数据集中的所有数据字段(超过 250000)来做到这一点将是相当浪费资源的使用。有人有更好的建议吗?有没有办法降低 isTRUE(all.equal(x,y)) 的“灵敏度”?

4

1 回答 1

6

使用中的tolerance参数all.equal

这适用于我的机器:

x <- 0.0000001
y <- 0.0000002

isTRUE(all.equal(x, y))
## [1] FALSE

isTRUE(all.equal(x, y, tolerance=10^-7))
## [1] TRUE
于 2013-02-22T15:20:47.603 回答