Стандартная оценочная версия фильтра dplyr игнорируется

Я пытаюсь написать функцию, в которой пользователь будет указывать фрейм данных и имя столбца (строку), и строка будет передана в dplyrfilter функция.

Я уверен, что я должен использовать 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?

0 ответов

Другие вопросы по тегам