Использование предварительно назначенного имени столбца в канале - PullRequest
0 голосов
/ 12 июня 2018

Я хотел бы предварительно назначить имя моего столбца и использовать его в канале dplyr

Вот пример.Я хочу сделать это:

iris %>% 
  group_by(Species) %>%
  summarise(Var = mean(Petal.Length[Sepal.Width > 3]))

Но с именем столбца, назначенным за пределами канала, как это

col_name <- "Petal.Length"

iris %>% 
  group_by(Species) %>%
  summarise(Var = mean(!!col_name[Sepal.Width > 3]))

1 Ответ

0 голосов
/ 12 июня 2018

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

iris %>%
 group_by(Species) %>%   
 summarise(Var = mean((!!rlang::sym(col_name))[Sepal.Width >3]))
# A tibble: 3 x 2
#  Species      Var
#  <fct>      <dbl>
#1 setosa      1.48
#2 versicolor  4.65
#3 virginica   5.72

Если нам нужно использовать только dplyr, тогда можно передать переменнуюобъект в summarise_at

iris %>%
   group_by(Species) %>% 
   summarise_at(vars(col_name), funs(mean(.[Sepal.Width > 3])))
# A tibble: 3 x 2
#  Species    Petal.Length
#  <fct>             <dbl>
#1 setosa             1.48
#2 versicolor         4.65
#3 virginica          5.72
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...