1
我想使用dplyr函数编写一个函数来输出z中每个元素的唯一元组(z,y)。该功能是这样的使用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)
但我收到以下错误:
Error in as.lazy_dots(list(...)) : object 'z' not found
这个简单的功能,这似乎非常类似于以前的,做工精细。
foo <- function(data, x, n){
library(lazyeval)
data %>%
group_by_(lazy(n, x)) %>%
summarise(n = n())
}
任何想法如何解决这个问题?
你到底想要什么,所需函数的参数是什么以及期望的输出是什么?例如,是否有'unique(data)%>%count(z)'为你工作?另外,将'library'调用放入函数定义是一件坏事。 –