使用R 3.2.2和dplyr 0.7.2我试图弄清楚如何有效地使用group_by
作为字符向量提供的字段。
选择很容易我可以像这样通过字符串选择一个字段
(function(field) {
mpg %>% dplyr::select(field)
})("cyl")
像这样通过多个字符串的多个字段
(function(...) {
mpg %>% dplyr::select(!!!quos(...))
})("cyl", "hwy")
和多个字段通过一个长度 > 1 的字符向量,像这样
(function(fields) {
mpg %>% dplyr::select(fields)
})(c("cyl", "hwy"))
由于group_by
我无法真正找到一种方法来为多个字符串执行此操作,因为如果我设法获得输出,它最终会按我提供的字符串进行分组。
我设法像这样按一个字符串分组
(function(field) {
mpg %>% group_by(!!field := .data[[field]]) %>% tally()
})("cyl")
这已经很丑陋了。
有谁知道我必须写什么才能运行
(function(field) {...})("cyl", "hwy")
和
(function(field) {...})(c("cyl", "hwy"))
分别?!!
我尝试了, !!!
, UQ
, enquo
, quos
,等的各种组合unlist
......并将它们保存在中间变量中,因为这有时似乎有所作为,但无法让它发挥作用。