有没有办法参数化dplyr调用

时间:2017-04-11 16:03:03

标签: r dplyr

我想参数化dplyr调用 对于例如如果我们有一个数据框如下

    one two three
   1   1   2     5
   2   2   3     1
   3   3   2     2
   4   4   1     4
   5   2   3     6
   6   4   4     8
   7   5   5     7

然后我发现我可以参数化select调用,找出列名是哪个列号。例如

我可以

 a <- df %>% select(2,3)

选择第2列和第2列3

但我发现我不能为group_by

做同样的事情

我无法做到

b <- df %>% group_by(3) %>% summarize(x= sum(2))

我被迫做

b <- df %>% group_by(three) %>% summarize(x= sum(two))

你能否告诉我如何做到这一点,以便我可以使用一个内部调用基于dplyr调用的参数化函数 传递参数

1 个答案:

答案 0 :(得分:1)

正如@mtoto所指出的,dplyr will not use column indexes因为哈德利并不认为这是个好主意。你可以编写自己的辅助函数

group_by_index <- function(data, idx) {
    group_by_(data, names(data)[idx])
}

然后你可以运行

df %>% group_by_index(3) %>% summarize(x= sum(2))