我试图找出为什么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
我发现一个可能的解决方案是使用pmatch
(“部分字符串匹配”),尽管函数首先使用转换为字符向量as.character
。我敢肯定,在某些情况下这会引起问题,但是在这种情况下它可以工作:
pmatch(a,b)
#[1] 11 12 13 14 15 16 17 18 19 20
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句