Вопрос
Как бы я сделал следующее, используя каверсы?
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)
Context
В моем приложении я смешиваю традиционные селекторы R и tidyverse
глаголы, но я хочу придерживаться одной системы для согласованности. Большинство вещей легко перевести из одной «вселенной» в другую, но я борюсь с этим.
Сноска
Я знаю, что есть много возможностей решить это. Но ради моего изучения давайте предположим, что lkpq
является фиксированным и не может быть изменено. Поэтому мне действительно интересно узнать, как я могу использовать список предложений с select
, если некоторые элементы не являются частью базовых данных.