如何将向量作为变量参数传递到R中的函数中

  • 本文关键字:函数 参数传递 变量 向量 r
  • 更新时间 :
  • 英文 :


我不确定我要做的事情是否有意义。

我想做以下操作:

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

我试图通过args传递一个char矢量,然后按ARGS作为列名进行组,但它不起作用。

我尝试过 get mget ,它们不按我想要的方式工作。

这是如何实现这一目标的一个小例子。您传递一串ARG,我们使用rlangsyms将其转变为符号列表。然后,我们将!!! 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

最新更新