为什么dplyr::Tall不读取函数中的变量?

为什么dplyr::Tall不读取函数中的变量?,r,dplyr,R,Dplyr,dplyr::Tall比dplyr::count快。为什么tally不读取函数中的alpha变量 对于本例的示例x,请说: x <- data.frame("PrecinctID" = c(101,102,103,104)) tally(x,PrecinctID == 101)[1,1] #[1] 919 findy <- function(y) {tally(x,PrecinctID == y)[1,1]} findy(101) #Error: object 'y

dplyr::Tall比dplyr::count快。为什么tally不读取函数中的alpha变量

对于本例的示例x,请说:

x <- data.frame("PrecinctID" = c(101,102,103,104))


tally(x,PrecinctID == 101)[1,1] 

#[1] 919 

findy <- function(y) {tally(x,PrecinctID == y)[1,1]} 

findy(101)

#Error: object 'y' not found

findy <- function(y) {count(x,PrecinctID == y)[2,2]} 

findy(101)  

#Source: local data frame [1 x 1]

#    n
#1 919
[自我回答:]

我能够解决我自己的问题。Tally只接受tbl数据。所以,无论您使用的是tally还是Summary,都可以通过dplyr管道%>%或运算符将其泵入。一旦这样做,就可以编排嵌入查询的相当复杂的字段。给定x是大型投票者数据库:

tbl_df(x)
Source: local data frame [128,438 x 17] ...

StateVoterID RegistrationNumber LastName FirstName ...

uPID <- sort(unique(x$PrecinctID))  
findP <- function(y) {  
x %>%  
summarise(  
Count = sum(PrecinctID == y),  
Good = sum(AVReturnStatus == "Good" & PrecinctID == y),  
Late = sum(AVReturnChallenge == "Too Late" & PrecinctID == y))  
}  

u1 <- t(sapply(uPID,findP))  
u1 <- cbind(uPID,u1)  


head(u1)  
     uPID Count Good Late  
[1,] 101  917   476  4   
[2,] 102  630   367  8   
[3,] 103  687   482  2   
[4,] 104  439   312  1   
[5,] 105  414   252  0   
[6,] 106  778   422  2   

示例不可复制。什么是x和y?x是一个大数据帧。y是函数的参数,在本例中为“101”。您可以使用自己的字段或data.frames。我想知道是否有一个变通方法允许它读取函数中的alpha变量。请阅读以下内容:这是一个问题吗?如果你想自己回答,你应该把答案放在页面下方的框中。