Как мне найти более одного значения, близкого к другому значению? - PullRequest
0 голосов
/ 29 января 2019

Я знаю, что для получения ближайшего значения к 0 я мог бы использовать следующее:

filter(abs(x-0)==min(abs(x-0)))

... с x в качестве вашего вектора.Как мне получить ближайшие два значения к 0?

Ответы [ 3 ]

0 голосов
/ 29 января 2019

Разве вы не можете просто использовать sort()?

set.seed(1)
x <- rnorm(10)
sort(abs(x-0))[1:2]
#> [1] 0.1836433 0.3053884

Создано в 2019-01-28 пакетом prex (v0.2.1)

Я также не думаю, что -0 сделает что-то для вас, поэтому мог бы просто сделать abs(x).

0 голосов
/ 29 января 2019

Вот версия dplyr;Вы можете использовать top_n, чтобы получить n наименьшее (или наибольшее) значение для некоторого поля:

df = data.frame(x = runif(100, -1, 1))

df %>%
  mutate(dist.from.0 = abs(x - 0)) %>%
  top_n(-2, dist.from.0)
0 голосов
/ 29 января 2019
tt <- sample(-200:200, 20)
tt[order(abs(tt), decreasing = F)][1:2]

Как это?

...