Нестандартные оценочные и символьные векторы

Представьте, что у меня есть набор данных следующим образом

d <- data.frame(a = 1:10, b = letters[1:10], c = sample(10))

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

v <- c("a", "b")

С помощью dplyr Я хотел бы использовать v в select переменные a & b,

Это не будет работать,

d %>%
  select(v)

Это потому что dplyr Пакеты используют нестандартную оценку и ожидают передачи фактических имен переменных, а не символов.

2 ответа

Решение

Для стандартной оценки вы захотите использовать функции с подчеркиванием после их имени. В этом случае это select_(), И нам также нужно будет использовать .dots аргумент для вставки вашего вектора в вызов.

d %>% select_(.dots = v)

Увидеть help(select) а также vignette("nse") для большего.

Вы также можете использовать:

d %>% select(one_of(v))
Другие вопросы по тегам