我想参数化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调用的参数化函数 传递参数
答案 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))