我正在尝试在数据框中对多个列进行group_by,并且我无法在group_by函数中写出每个列名,因此我想将列名称称为向量,如下所示:
cols <- colnames(mtcars)[grep("[a-z]{3,}$", colnames(mtcars))]
mtcars %>% filter(disp < 160) %>% group_by(cols) %>% summarise(n = n())
这会返回错误:
Error in mutate_impl(.data, dots) :
Column `mtcars[colnames(mtcars)[grep("[a-z]{3,}$", colnames(mtcars))]]` must be length 12 (the number of rows) or one, not 7
我肯定想使用dplyr函数来做到这一点,但无法想出这一点 .
1 回答
您可以使用
group_by_at
,您可以将列名称的字符向量作为组变量传递:或者您可以使用
vars
和列选择辅助函数在group_by_at
中移动列选择: