1
votes

R: Erreur dans new_quosures (NextMethod ()): impossible de trouver la fonction "new_quosures"

Considérez un bloc de données:

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

J'essaie de group_by et de résumer cependant, j'obtiens toujours l'erreur

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

Le code J'utilise comme suit:

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

Veuillez noter que ce sont des données factices et l'erreur est reproduite dans le système d'exploitation Windows avec les données factices. De plus, je travaille sur le système d'exploitation Windows. De plus, j'ai essayé ce qui suit:

  1. Supprimer plyr
  2. Vérifier et modifier les valeurs NA / Infinite
  3. Transformation du bloc de données en table de données et exécution du code

Pourriez-vous s'il vous plaît m'aider à comprendre la cause principale de l'erreur ou une alternative que je pourrais utiliser?

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


1 commentaires

Vous avez probablement un package dplyr obsolète (qui est différent de plyr ) avec un package rlang mis à jour (ou peut-être vice versa). Pouvez-vous afficher les informations de version du package à partir de sessionInfo () ?


3 Réponses :


1
votes

La fonction group-by_ est obsolète, la façon courante de le faire serait de convertir le vecteur de caractères en symboles, puis de les séparer en group_by : < pré> XXX


2 commentaires

Cela donne la même erreur: "Erreur dans new_quosures (NextMethod ()): impossible de trouver la fonction" new_quosures ""


Assurez-vous que vous disposez des versions les plus récentes de dplyr et rlang



1
votes

Nous pourrions utiliser le group_by_at de dplyr qui peut prendre une chaîne comme entrée

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.


4 commentaires

Cela donne la même erreur: "Erreur dans new_quosures (NextMethod ()): impossible de trouver la fonction" new_quosures ""


@BruceWayne Quelle est la version de dplyr que vous avez? J'ai packageVersion ('dplyr') # [1] '0.8.0.1' . group_by_at est une nouvelle fonction


@BruceWayne n'est pas sûr du problème. Cela fonctionne bien pour moi


la bibliothèque tidyr s'en fout. Supprimer tidyr aide



1
votes

J'obtiens la même erreur avec un code qui fonctionnait bien il y a à peine 2 semaines. Cela s'est produit lors de l'application de dplyr :: group_by () . J'avais la version 0.7.6 du package dplyr et je l'ai mise à jour vers 0.8.0.1. Cela a résolu le problème.


0 commentaires