У меня есть data.frame или tibble с числовым столбцом x
:
library(dplyr)
data <- tibble(x = c(0.123456, 0.5678910, 1.234567, 5.67891011, 12.345678),
y = c(1, 2, 3, 4, 5))
Чтобы отфильтровать строки, где x
близко (с заданным допуском, например, 1e-4
) к набору значений, например. c(0.5679, 5.6789)
. Я бы использовал что-то вроде этого:
data %>% filter(near(x, 0.5679, 1e-4) | near(x, 5.6789, 1e-4))
#> # A tibble: 2 x 2
#> x y
#> <dbl> <dbl>
#> 1 0.568 2
#> 2 5.68 4
Это становится многословным, если вместо c(0.5679, 5.6789)
у меня есть вектор из 100 элементов... Итак, есть ли функция, позволяющая написать что-то вроде:
data %>% filter(near_any(x, c(0.5679, 5.6789), tol = 1e-4))
Другими словами, есть ли функция, которая для near()
является тем же, чем %in%
для ==
?
(Я могу написать такую функцию near_any()
, но прежде я хочу проверить, не существует ли она еще)
Создано 10 июля 2018 г. пакетом reprex (v0.2.0).
any
(только что векторизованной), и вам нужно использоватьlapply
не для значенийy
, а для значенийx
(что практически наверняка более эффективно для больших таблиц). 10.07.2018lapply
илиmap
). Таким образом, использование векторизованных операций внутриnear
должно выполняться для более длинного вектора. 10.07.2018map_lgl
на каждом элементе столбца x 10.07.20182*(2-1)
так2
итераций, а не4
, так какReduce
применяет свою функциюn-1
раз :). 10.07.2018