R中匹配函数的奇异行为

R中匹配函数的奇异行为,r,match,R,Match,我试图找出为什么在比较两个数值向量时,match函数显示出奇怪的行为。这显然与数值的精确性有关,但我一直无法找到对该问题的良好描述。我已经能够用zapsmall解决这个问题,但是不知道是否有更好的方法 例子: a我发现一个可能的解决方案是使用pmatch(“部分字符串匹配”),尽管函数首先将转换为.character的字符向量。我肯定在某些情况下,这会导致问题,但在这种情况下,它是有效的: pmatch(a,b) #[1] 11 12 13 14 15 16 17 18 19 20 我发现 a

我试图找出为什么在比较两个数值向量时,
match
函数显示出奇怪的行为。这显然与数值的精确性有关,但我一直无法找到对该问题的良好描述。我已经能够用
zapsmall
解决这个问题,但是不知道是否有更好的方法

例子:
a我发现一个可能的解决方案是使用
pmatch
(“部分字符串匹配”),尽管函数首先将
转换为.character
的字符向量。我肯定在某些情况下,这会导致问题,但在这种情况下,它是有效的:

pmatch(a,b)
#[1] 11 12 13 14 15 16 17 18 19 20
我发现

a <- 10:19 / 10
a
# [1] 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9

b <- 0:19 / 10
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 13 14 15 16 17 18 19 20

浮点问题?请看:
选项(数字=20);a[3]-b[13]
。然后
a[1]-b[11]
。有没有办法近似匹配?(不确切)它是如何工作的?
a <- 10:19 / 10
a
# [1] 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9

b <- 0:19 / 10
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 13 14 15 16 17 18 19 20