我正在尝试找出为什么match
函数在比较两个数字向量时显示奇怪的行为。显然与值的精度有关,但我一直无法找到一个好的描述该问题的方法。我已经用zapsmall
解决了这个问题,但想知道是否有更好的方法。
示例:
a <- seq(1,1.9,0.1)
a
# [1] 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9
b <- seq(0,1.9,0.1)
b
# [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9
match(a,b)
# [1] 11 12 NA 14 NA 16 17 18 19 20
match(zapsmall(a),zapsmall(b))
# [1] 11 12 13 14 15 16 17 18 19 20
options(digits = 20); a[3] - b[13]
。然后是a[1] - b[11]
。 - user3710546