Предположим, у меня есть этот фрейм данных:
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 ?