【问题标题】:How can I pass a vector as variable arguments into a function in R [duplicate]如何将向量作为变量参数传递给R中的函数[重复]
【发布时间】:2018-04-25 02:22:18
【问题描述】:

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

我想做如下的事情:

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

我试图将 char 向量作为 args 传递,然后按 args 分组作为列名,但它不起作用。

我已经尝试过 getmget,它们并没有按照我想要的方式工作。

【问题讨论】:

标签: r


【解决方案1】:

这里有一个小例子来说明如何做到这一点。你传入一个 args 字符串,我们使用来自 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

【讨论】:

猜你喜欢
  • 2020-10-30
  • 2014-11-04
  • 2022-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-30
  • 2021-07-03
相关资源
最近更新 更多