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'調用放入函數定義是一件壞事。 –