我有两个数组“F1”和“F2”:
F1 <- c(1,3,4,5)
F2 <- c(6,7,8,9)
我想找到“F1”和“F2”中每个元素的最近邻居。
示例:对于“F1”中的值3,“F1”中的最近邻居为4.并且“F2”中的最近邻居为6.而对于“F2”中的值9,最近邻居为8 ,“F1”中有5个。
答案 0 :(得分:2)
您可以使用RANN
包:
F1 <- c(1,3,4,5)
F2 <- c(6,7,8,9)
require(RANN)
nn2(F1,F2,k = 1)
应产生以下结果:
> nn2(F1,F2,k = 1)
$nn.idx
[,1]
[1,] 4
[2,] 4
[3,] 4
[4,] 4
$nn.dists
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
当然,您可以考虑修改nn2
语法以获得更理想的结果。该方法使用ANN库,为您提供了如何找到最近邻居的机会。
我想你可能真的有兴趣找到最接近的匹配。例如,要找到您可以执行的数字6
的最接近匹配:
which(abs(F1-6)==min(abs(F1-6)))
这与识别最近邻居不同。