我有点x
和y
值(在具有离散步骤的网格上)。我想找到那些与另一个点位于同一位置或某个范围内的点。我尝试了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]会再次'碰撞'。
点的索引或值都可以,但每次碰撞我需要一个信息。
答案 0 :(得分:0)
这是一种蛮力,但应该很长时间,x
和y
并不大。
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