Как получить индексы K ближайших соседей наблюдения, которого нет внутри фрейма данных в r? - PullRequest
0 голосов
/ 20 октября 2019

Предположим, у меня есть этот фрейм данных:

df <- data.frame(replicate(10,sample(1:25,1000,rep=TRUE)))

У меня также есть это наблюдение, которого нет в наборе данных.

obs <- c(12, 2, 19, 3, 5, 8, 12, 4, 5, 1)

Я пытаюсь найти k ближайших соседей obs в кадре данных df .

Этот код ниже позволяет мне получить матрицу, содержащую индексы 30 ближайших соседей для каждого наблюдения в пределах df.

knnmatrix <- FNN::get.knn(scale(df), k = 30) 

Затем я могу использовать это, чтобы получить фрейм данных, состоящий только из 30 ближайших соседей любого наблюдения, которое я хочу:

df2 <- df[knnmatrix$nn.index[3,],]

Однако, поскольку он не находится в df , я не могу найти способ получить эти значения для obs . Каков хороший метод получения индексов k (в данном случае 30) ближайших соседей obs в пределах фрейма данных df ?

...