R 在管道中使用预先指定的列名
我想预先指定我的列名,并在dplyr管道中使用它 这里有一个例子。我想这样做: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
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