Стандартная оценочная версия фильтра dplyr игнорируется
Я пытаюсь написать функцию, в которой пользователь будет указывать фрейм данных и имя столбца (строку), и строка будет передана в dplyr
filter
функция.
Я уверен, что я должен использовать filter_
, но я не могу заставить его вести себя, как ожидалось.
Рассмотрим кадр данных, data
ниже. Если я хочу передать это к версии NSE filter
это достигается как показано ниже
data <- data.frame(column1 = c(-1:10))
data %>% filter(column1 >= 0)
# column1
# 1 0
# 2 1
# 3 2
# 4 3
# 5 4
# 6 5
# 7 6
# 8 7
# 9 8
# 10 9
# 11 10
Однако, когда я пытаюсь реализовать это внутри функции, фильтр, кажется, игнорируется, как показано ниже.
filter_fn <- function(d_in,column){
criteria <- interp(~ as.name(column) >= 0)
d_out = d_in %>% filter_(criteria)
return(d_out)
}
filter_fn(data, "column1")
# column1
# 1 -1
# 2 0
# 3 1
# 4 2
# 5 3
# 6 4
# 7 5
# 8 6
# 9 7
# 10 8
# 11 9
# 12 10
Это не нюанс передачи параметров через функцию, так как тот же самый результат возвращается из.
data %>% filter_(interp(~ as.name(column) >= 0))
ВОПРОС: Как я могу написать функцию с нужными параметрами, которая будет фильтровать кадр данных, используя dplyr
?