我目前正在开发一个软件包,在其中我尝试实现内部使用dplyr::group_by
的函数。但是,在对软件包进行检查(对devtools CRAN进行检查)后,我得到了一条说明no visible binding for global variable Levels
的注释。
foo <- function(x) {
out <- data.frame(Levels = x) %>%
group_by(Levels) %>%
summarise(n = n())
return(out)
}
foo: no visible binding for global variable 'Levels'
Undefined global functions or variables:
Levels
为了以非NSE方式进行操作,我可以将group_by_()
与字符串一起使用,但是我知道不赞成这样做,而建议使用quosures。但是,我仍然很难弄清楚该怎么做。
我尝试使用one_of()
,但没有成功:
foo <- function(x) {
table_full <- data.frame(Levels = x) %>%
group_by(one_of("Levels")) %>%
summarise(n = n())
}
Error in mutate_impl(.data, dots) :
Evaluation error: No tidyselect variables were registered
最正确的方法是什么?
答案 0 :(得分:0)
我错过了什么吗?
library(dplyr)
foo <- function(x) {
data.frame(Levels = x) %>%
group_by(Levels) %>%
summarise(n = n())
}
foo(mtcars$gear)
结果为:
# A tibble: 3 x 2
Levels n
<dbl> <int>
1 3. 15
2 4. 12
3 5. 5