我想用all.equal函数比较两个向量的元素。奇怪的是,这两个比较给予了不同的结果,我想知道为什么会发生这种情况。
map2(c(1,1,0.7), c(1,1,0.6), all.equal, tolerance = 0.1, scale = 1)
[[1]]
[1] TRUE
[[2]]
[1] TRUE
[[3]]
[1] TRUE
map2(c(1,1,0.7), c(1,1,0.8), all.equal, tolerance = 0.1, scale = 1)
[[1]]
[1] TRUE
[[2]]
[1] TRUE
[[3]]
[1] "Mean absolute difference: 0.1"
由于0.7和0.8之间以及0.6和0.7之间的绝对差是相同的,我期望得到两者的T。
1条答案
按热度按时间toiithl61#
这与浮点精度有关,描述为here和there。
所以两者的差实际上是
> 0.1
。您可以添加一个小公差来解决这个问题。实际上
.Machine$double.eps^0.5
是all.equal
的默认公差: