如何将矢量作为变量参数传递给R中的函数

时间:2018-04-25 02:22:19

标签: r

我不确定我想要做的事情在R中是否有意义。

我想做以下的事情:

fun <- function(df, args){
    .....
    df %>%
    group_by(args)
    .....

我正在尝试将char矢量作为args传递,然后将args作为列名称进行分组,但它不起作用。

我尝试过获取 mget ,但它们并没有按照我想要的方式运作。

1 个答案:

答案 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