R: Ошибка в new_quosures (NextMethod ()): не удалось найти функцию "new_quosures" - PullRequest
1 голос
/ 15 апреля 2019

Рассмотрим фрейм данных:

data = data.frame(a=c(1,1,1,2,2,3),
              b=c("apples", "oranges", "apples", "apples", "apples", "grapefruit"),
              c=c(12, 22, 22, 45, 67, 28), 
              d=c("Monday", "Monday", "Monday", "Tuesday", "Wednesday", "Tuesday"),
              out = c(12, 14, 16, 18, 20, 22),
              rate = c(0.01, 0.02, 0.03, 0.04, 0.07, 0.06))

Я пытаюсь group_by и, тем не менее, получаю сообщение об ошибке

Error in new_quosures(NextMethod()) : 
  could not find function "new_quosures"

Я использую следующий код:

model.data.dim.names <-  c("a", "b", "c")

data2 <- data %>% group_by_(.dots = model.data.dim.names) %>% summarise(
    mean_adj1 = (mean(out, na.rm=FALSE)),
    mean_adj2 = (mean(out)/mean(rate))
  )

Обратите внимание, что это фиктивные данные, и ошибка воспроизводится в ОС Windows с фиктивными данными.Кроме того, я работаю на ОС Windows.Кроме того, я попробовал следующее:

  1. Remove plyr
  2. Проверка и редактирование значений NA / Infinite
  3. Превращение фрейма данных в таблицу данных и запуск кода

Не могли бы вы помочь мне понять основную причину ошибки или альтернативу, которую я мог бы использовать?

Answer: 

1) tidyr library screws up with it. Removing tidyr helps
2) use most updated dplyr library and group_by/ group_by_at/group_by(!!!syms(model.data.dim.names) works

Ответы [ 3 ]

1 голос
/ 16 апреля 2019

Мы могли бы использовать group_by_at из dplyr, который может принимать строку в качестве ввода

library(dplyr)
data %>% 
   group_by_at(model.data.dim.names) %>% 
   summarise(
    mean_adj1 = mean(out, na.rm=FALSE),
    mean_adj2 = mean(out) / mean(rate)
  )
# A tibble: 6 x 5
# Groups:   a, b [4]
#      a b              c mean_adj1 mean_adj2
#  <dbl> <fct>      <dbl>     <dbl>     <dbl>
#1     1 apples        12        12     1200 
#2     1 apples        22        16      533.
#3     1 oranges       22        14      700 
#4     2 apples        45        18      450 
#5     2 apples        67        20      286.
#6     3 grapefruit    28        22      367.
1 голос
/ 24 апреля 2019

Я получаю ту же ошибку с кодом, который работал нормально всего 2 недели назад.Это произошло при применении dplyr::group_by().У меня была версия пакета dplyr 0.7.6 и я обновил его до 0.8.0.1.Это решило проблему.

1 голос
/ 15 апреля 2019

Функция group-by_ устарела, текущий способ сделать это - преобразовать вектор символов в символы, а затем без кавычек объединить их в group_by:

library(dplyr)

data %>%
  group_by(!!!syms(model.data.dim.names)) %>% 
  summarise(
    mean_adj1 = mean(out, na.rm=FALSE),
    mean_adj2 = mean(out) / mean(rate)
  )
## A tibble: 6 x 5
## Groups:   a, b [4]
#      a b              c mean_adj1 mean_adj2
#  <dbl> <fct>      <dbl>     <dbl>     <dbl>
#1     1 apples        12        12     1200 
#2     1 apples        22        16      533.
#3     1 oranges       22        14      700 
#4     2 apples        45        18      450 
#5     2 apples        67        20      286.
#6     3 grapefruit    28        22      367.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...