我不确定我想要做的事情在R中是否有意义。
我想做以下的事情:
fun <- function(df, args){
.....
df %>%
group_by(args)
.....
我正在尝试将char矢量作为args传递,然后将args作为列名称进行分组,但它不起作用。
我尝试过获取和 mget ,但它们并没有按照我想要的方式运作。
答案 0 :(得分:1)
这是一个如何实现这一目标的小例子。您传入了一串参数,我们使用syms
中的rlang
将其转换为符号列表。然后,我们使用!!!
unquote-splice运算符按这些符号分组。
library(rlang)
library(dplyr)
fun <- function(df, args){
by <- syms(args)
df %>%
group_by(!!!by) %>%
summarize_all(mean)
}
将此示例与mtcars
:
> fun(mtcars, c("cyl"))
# A tibble: 3 x 11
cyl mpg disp hp drat wt qsec vs am gear carb
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 4.00 26.7 105 82.6 4.07 2.29 19.1 0.909 0.727 4.09 1.55
2 6.00 19.7 183 122 3.59 3.12 18.0 0.571 0.429 3.86 3.43
3 8.00 15.1 353 209 3.23 4.00 16.8 0 0.143 3.29 3.50