, 내가 좋아하는 뭔가 보이는 점의 벡터가있는 경우 :똑같이 N의 집합을 찾기 먼 지점 편의상
x = c(1,4,5,8,9)
내가 서로 같은 거리에있는 n
점을 찾기 위해 노력하고 있습니다. 이 경우 내 n=3
나의 이상적인 대답은 다음과 같습니다
1,5,9-
5-1=4
및 9-5=4
입니다.
실제 벡터는 훨씬 더 크고 복잡하며 n
입니다. 어떻게하면이 아이디어를 얻을 수 있습니까? 사전에
감사합니다!
, 내가 좋아하는 뭔가 보이는 점의 벡터가있는 경우 :똑같이 N의 집합을 찾기 먼 지점 편의상
x = c(1,4,5,8,9)
내가 서로 같은 거리에있는 n
점을 찾기 위해 노력하고 있습니다. 이 경우 내 n=3
나의 이상적인 대답은 다음과 같습니다
1,5,9-
5-1=4
및 9-5=4
입니다.
실제 벡터는 훨씬 더 크고 복잡하며 n
입니다. 어떻게하면이 아이디어를 얻을 수 있습니까? 사전에
감사합니다!
이것은 전체적인 해결책은 아니지만 나는 이것이 하나의 시작이라고 생각합니다. 첫째, 거리 매트릭스를 계산하는 것이 도움이 될 것입니다.
> x <- c(1,4,5,8,9)
> dx <- dist(x)
> dx
1 2 3 4
2 3
3 4 1
4 7 4 3
5 8 5 4 1
둘째, 거리를 정렬하고 길이를 인코딩하여 동일한 거리만큼 떨어진 지점을 식별 할 수 있습니다.
> rdx <- rle(sort(dx))
> rdx
Run Length Encoding
lengths: int [1:6] 2 2 3 1 1 1
values : num [1:6] 1 3 4 5 7 8
당신이 원하는 지점 세트를 선택하고 다음 order
기능을 사용하여 원래 거리 매트릭스에 다시 인덱스를 얻을. 제 3 그룹 촬영 - 거리 (4)에 의해 분리 점으로 - 예
> i=3
> orderedIndex <- sum(rdx$lengths[1:(i-1)])
> order(dx)[(orderedIndex+1):(orderedIndex+rdx$lengths[i])]
[1] 2 6 9
로 (인덱스는 왼쪽에서 오른쪽으로 아래로 그 위에서부터 카운트). 거리 매트릭스에서 4
을 확인했습니다. x
에서 1/3, 2/4, 3/5 포인트 사이의 거리입니다. 그러나 두 번째와 네 번째 점을 제거하기 위해 더 많은 작업을해야합니다. 아마 그들이 연결되어 있기 때문에 당신은 1, 3 및 5 포인트를 선택합니까?
rle
함수로 식별되는 모든 포인트 그룹을 선택한 크기 이상으로 처리 한 다음 연결을 확인하려고한다고 생각합니다.
추신 : 거리 매트릭스의 인덱스에서 (행, 열)로 이동하는 방법에 관해서는 [여기 좋은 대답이 있습니다] (http://stackoverflow.com/a/17191756/834521) – TooTone
위의 설명과 일치하여 원하는 내용 일 수도 있고 반드시 필요한 내용 일 수도 있습니다. 그래도이 방법을 사용하는 것이 더 효율적이라고 확신합니다.
x = c(1,4,5,8,9)
x2 <- as.matrix(expand.grid(x, x))
x2 <- as.data.frame(t(apply(x2, 1, sort)))
x2 <- x2[!duplicated(x2), ]
x2 <- cbind(x2, d =abs(mapply("-", x2[,1], x2[,2])))
x2[order(x2$d), ]
# V1 V2 d
# 1 1 1 0
# 7 4 4 0
# 13 5 5 0
# 19 8 8 0
# 25 9 9 0
# 8 4 5 1
# 20 8 9 1
# 2 1 4 3
# 14 5 8 3
# 3 1 5 4
# 9 4 8 4
# 15 5 9 4
# 10 4 9 5
# 4 1 8 7
# 5 1 9 8
솔직히 왜 '1,5,9'가 등거리입니까? 점은 그 점과 집합 내의 각 객체 사이의 거리가 같으면 객체 집합과 등거리에 있다고 말합니다. – storaged
왜 "가장 가능성이 높습니다"등거리입니까? 등전위는 진실인가 거짓인가? 집합 내의 임의의 두 점 사이의 거리가 같은 실수 인 경우 집합은 등거리입니다. 귀하의 예제에서, 1,5,9는 등거리가 아닙니다. ! = | 9-1 |. –
특히'length (x)'가 크고'n'이 작은 경우 길이가 'n'인 여러 벡터가 등거리가 될 수있는 것처럼 보입니다. – rbatt