dplyr в создании пакета: group_by со строкой без group_by_ - PullRequest
0 голосов
/ 23 января 2019

В настоящее время я разрабатываю пакет, в котором я пытаюсь реализовать функцию, которая внутренне использует 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_() со строкой, но я понял, что этот способ не рекомендуется в пользу использования кавычек.Тем не менее, мне все еще трудно понять, как это сделать.

Я пытался использовать 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 голосов
/ 23 января 2019

Я что-то упустил или не смог:

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
...