Выберите столбец, который может не существовать без ошибок, используя стандартную оценку - PullRequest
0 голосов
/ 02 октября 2018

Я хочу выбрать столбец, который может существовать или не существовать, и сделать так, чтобы он просто возвращал все остальные столбцы, если столбец отсутствует без ошибок.Это работает при нестандартной оценке, но не при стандартной оценке с функцией tidyverse select_.

Например, следующее работает по назначению:

iris %>%
  select(Sepal.Length, Sepal.Width, contains("banana"))

    Sepal.Length Sepal.Width
1            5.1         3.5
2            4.9         3.0
3            4.7         3.2
4            4.6         3.1
...

Но при использовании стандартной оценки (которую мне нужно использовать для публикации этого в пакете) это не работает:

iris %>%
  select_("Sepal.Length", "Sepal.Width", contains("banana"))

Error: No tidyselect variables were registered

Я понимаю, что не так с версией, которая ломается, но я не уверен, какие альтернативы у меня есть, используя функциональность Tidyverse.

1 Ответ

0 голосов
/ 02 октября 2018

Если вы хотите выйти из тидиверса, вы можете явно указать имена столбцов:

iris[intersect(names(iris), c("Sepal.Length","Sepal.Width","banana"))]

Для contains() вы можете использовать grep:

ccols <- c("Sepal.Length", "Sepal.Width", 
           grep("banana", names(iris), value=TRUE))
iris[ccols]

Это все равно будет работать (поскольку это стандарт * оценка), если вы замените строки ссылками на переменные, например:

x <- "banana"
ccols <- c("Sepal.Length", "Sepal.Width", 
           grep(x, names(iris), value=TRUE))
iris[ccols]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...