Je souhaite écrire une fonction en utilisant les fonctions dplyr pour afficher le nombre de tuples uniques (z, y) de chaque élément de z. La fonction ressemblerait à ceciÉvaluation paresseuse lors de l'écriture de fonctions avec dplyr
library(tidyverse)
data <- data_frame(z = rep(c('a', 'b'), 50),
y = sample(letters[13:18], size = 100, T))
foo1 <- function(data, x, n){
library(lazyeval)
data %>%
group_by_(lazy(n, x)) %>%
filter(row_number() == 1) %>%
ungroup() %>%
group_by_(lazy(x)) %>%
summarise(nr_x = n()) %>%
arrange(desc(nr_x))
}
foo1(data, x = z, n = y)
Mais je reçois l'erreur suivante:
Error in as.lazy_dots(list(...)) : object 'z' not found
Cette fonction simple, qui semble très similaire à la précédente, fonctionne très bien.
foo <- function(data, x, n){
library(lazyeval)
data %>%
group_by_(lazy(n, x)) %>%
summarise(n = n())
}
Des idées pour résoudre ce problème?
Qu'est-ce que vous voulez exactement, quels sont les paramètres de la fonction nécessaire et quelle est la sortie désirée? Est-ce que, par exemple, 'unique (data)%>% count (z)' fonctionne pour vous? Aussi, c'est une mauvaise chose de mettre l'appel 'library' dans la définition de la fonction. –