选择大约相隔x的条目

时间:2014-04-24 08:16:24

标签: r

我有一个矢量,其条目代表序列上的位置。序列上的条目之间的距离在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]等。

有关如何做到这一点的想法?感谢。

2 个答案:

答案 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
...

一个数据框,所有对按顺序排列。