Вопрос
Как бы я сделал следующее, используя quosures?
library(tidyverse)
lkp <- c("am", "vs", "Sepal.Width", "Sepal.Length")
stringSelect <- function(mdat) {
lkpOK <- intersect(lkp, names(mdat))
mdat %>% select(one_of(lkpOK))
}
stringSelect(mtcars)
stringSelect(iris)
Итак, как я могу подмножить lkpq
ниже, чтобы добиться того же самого с quos
, чтобы избежать предупреждения?
lkpq <- quos(am, vs, Sepal.Width, Sepal.Length)
quosSelect <- function(mdat) {
lkpqOK <- lkpq ##???
mdat %>% select(!!!lkpqOK)
}
quosSelect(mtcars) ## does not work
quosSelect(iris)
Контекст
В своем приложении я смешиваю традиционные селекторы R и tidyverse
глаголы, но я хочу придерживаться одной системы для согласованности. Большинство вещей легко перевести из одной «вселенной» в другую, но я борюсь с этим.
Сноска
Я знаю, что есть много возможностей решить эту проблему. Но ради моего обучения давайте предположим, что lkpq
фиксировано и не может быть изменено. Поэтому мне действительно интересно узнать, как я могу использовать список квазур с select
, если некоторые элементы не являются частью базовых данных.