R中的碰撞检测和接近

时间:2018-01-05 16:24:59

标签: r collision-detection

我有点xy值(在具有离散步骤的网格上)。我想找到那些与另一个点位于同一位置或某个范围内的点。我尝试了match()duplicated()which()for循环和if不同种类的案例,并以某种方式陷入困境。

举个例子:

x <- c(23, 45, 98, 23, 12) 
y <- c(15, 90, 10, 15, 70)
在这种情况下,

[1]和[4]会“碰撞”。

x <- c(24, 45, 98, 23, 12)
y <- c(14, 90, 10, 15, 70) 
range<-1
在这种情况下,

[1]和[4]会再次'碰撞'。

点的索引或值都可以,但每次碰撞我需要一个信息。

1 个答案:

答案 0 :(得分:0)

这是一种蛮力,但应该很长时间,xy并不大。

x <- c(24, 45, 98, 23, 12)
y <- c(14, 90, 10, 15, 70)
range <- 2

temp = as.matrix(dist(cbind(x, y)))
diag(temp) = Inf
unique(t(apply(which(temp < range, arr.ind = TRUE), 1, sort)))
#  [,1] [,2]
#4    1    4