我才刚刚开始在R中使用准引号,并且遇到了一个我似乎无法解决的关于灵活分组的问题。
通常,这与我想做的事情很接近:
# dependencies
library(dplyr)
library(rlang)
# create data set
df <- tibble(a = factor(c(1, 2, 1, 2, 1, 2)),
b = factor(c(3, 3, 4, 4, 3, 4)),
c = factor(c(5, 5, 5, 6, 6, 6)))
# function
grouping <- function(.data, g, ...) {
g <- enquo(g)
more <- enquos(...)
.data %>%
group_by(!!g, !!!more)
}
# run tests
grouping(df, a)
grouping(df, a, b)
grouping(df, a, b, c)
输出正确,例如
grouping(df, a, b)
小标题:6 x 3
群组:a,b [4]
(...)
但是,一旦我不使用...
就会遇到问题,具体来说,我想进行一些计算,首先将灵活的内部因素数量和灵活的因素之间因素数量进行分组。因为我还需要分别处理内部因素和内部因素,所以...
将不再起作用。
因此,我的通话最终应该看起来像
do_calculations(data, between = list(), within = list())
我现在遇到的问题是现在分组失败了。回到我的初始示例(一旦找到一个列表,第二个应该很容易):
# function
grouping <- function(.data, g, g2 = list()) {
g <- enquo(g)
more <- enquos(g2)
.data %>%
group_by(!!g, !!!more)
}
导致错误
mutate_impl(.data,点)中的错误: 列
list(b, c)
的长度必须为6(行数)或1,而不是2
因此,总而言之,我想显式地给我的函数一个向量或列表,而不是...
,然后再按此列表中的所有元素分组。
感谢您的帮助!