Я написал функцию, которой я предоставляю число, которое затем дает мне x строк, числовое значение которых близко к входному числу.
Например, это кадр данных:
test.data <- data.frame(
number = c(0,1,3,4,6,2,7,1,3,3,4,0,1,6),
letter = letters[1:14]
)
Тогда я написал эту функцию, чтобы дать мне соседей:
# library(dplyr)
get.closest <- function( input.number, n.closest, data ) {
data %>%
mutate(abs.score.dif = abs(input.number - number)) %>%
arrange(abs.score.dif) %>%
head(n.closest)
}
Так, например, get.closest(6, 3, test.data)
даст мне:
number letter abs.score.dif rel.score.dif
1 6 e 0 0
2 6 n 0 0
3 7 g 1 -1
Однако я должен сделать это для > 20 000 номеров, и мой фрейм данных также содержит около 20 000 строк, что делает это действительно медленным . Как это можно сделать быстрее?