在两个向量中找到最接近的数字

Pas*_*cal 1 sorting r vector

这个问题似乎R尚未得到解决.所以,举个例子

a <- c(20, 104, 380, 388)
b <- c(16, 38, 108, 130, 200, 222, 291, 314, 384, 406, 476, 498, 568, 591)
Run Code Online (Sandbox Code Playgroud)

我怎么觉得在这些数字b后面那些a?因此,这里的解决方案应该是[38 108 384 406].

需要注意的是ab长度可以变化.

age*_*nis 5

这使用了这个findInterval功能:

b[findInterval(a, b)+1]
#### [1]  38 108 384 406
Run Code Online (Sandbox Code Playgroud)

这(以及此处建议的其他一些解决方案)需要您先前对b矢量进行排序.

您可以使用参数left.open来确定数字相等时您想要的行为.