我有一个矢量,其条目代表序列上的位置。序列上的条目之间的距离在1到10 ^ 7的范围内。对于给定的x,我需要找到距离大约为x的一对条目。
示例:
v = [1 2 3 1000 1002 2000]
然后对于x = 1,我们可以得到条目[1,2],[1,3],[2,3],[1000,1002] 对于x = 1000,我们可以得到[1,1000],[2,1000],[1002,2000]等。
有关如何做到这一点的想法?感谢。
答案 0 :(得分:1)
您可以通过以下方式获得所有成对距离:
dist(v, method="manhattan")
因此abs(dist(v, method="manhattan")-x)
将给出距x最近距离的最小值。您可以获取此order
来对条目进行排序,找到零的位置,...
答案 1 :(得分:0)
也许这样的功能可行:
dist = function(vec, margin) {
d = expand.grid(vec, vec[2:length(vec)])
d$diff = abs(abs(d$Var1 - d$Var2) - margin)
d[order(d$diff),]
}
所以跑步:
v = c(1, 2, 3, 1000, 1002, 2000)
dist(v, 1000)
会输出:
Var1 Var2 diff
5 1002 2 0
18 2000 1000 0
20 2 1002 0
28 1000 2000 0
11 1002 3 1
...
一个数据框,所有对按顺序排列。