R: фильтр () на основе столбца с именем из списка? - PullRequest
0 голосов
/ 13 ноября 2018

Как использовать filter() с именем столбца из списка?

Я думал, что следующее будет работать, но это не так:

filter(dt, myColList[1] == "entry")

^^ где: myColList <- c("col1", "col2", "col3")

NB: filter(dt, col1 == "entry") работает нормально, но это будет функция, и я бы хотел указать конкретные имена столбцов ..

1 Ответ

0 голосов
/ 13 ноября 2018

Мы можем использовать sym, чтобы преобразовать его в символ, а затем выполнить оценку (!!)

library(tidyverse)
dt %>%
   filter( !! rlang::sym(myColList[1]) == "entry") 

или используйте filter_at, который может принимать строку в качестве входной переменной

dt %>% 
   filter_at(vars(myColList[1]), all_vars(.== 'entry'))

В качестве воспроизводимого примера

myColList <- names(iris)[1:3]
data(iris)
iris %>%
    filter(!! rlang::sym(myColList[1]) > 5)

iris %>% 
    filter_at(vars(myColList[1]), all_vars(. > 5))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...