包创建中的dplyr:group_by,字符串不带group_by_

时间:2019-01-23 03:20:12

标签: r group-by dplyr nse

我目前正在开发一个软件包,在其中我尝试实现内部使用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

最正确的方法是什么?

1 个答案:

答案 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