R 在管道中使用预先指定的列名

R 在管道中使用预先指定的列名,r,dplyr,R,Dplyr,我想预先指定我的列名,并在dplyr管道中使用它 这里有一个例子。我想这样做: iris %>% group_by(Species) %>% summarise(Var = mean(Petal.Length[Sepal.Width > 3])) 但是在管道外部指定了列名,如下所示 col_name <- "Petal.Length" iris %>% group_by(Species) %>% summarise(Var = mean

我想预先指定我的列名,并在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]))
col\u name%
组别(种类)%>%
总结(Var=平均值(!!列名称[萼片宽度>3]))
我们可以转换为符号(
sym
),然后进行评估(
!!


使用核心tidyverse功能是不可能的?@Shinobi_Atobe
rlang
也包含在TidyVersei中,如果我们真的只想使用
dplyr
,那么就使用
summary_at
iris%%groupby(Species)%%summary_at(vars(col_name),funs(mean([Sepal.Width>3])
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
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