2014-07-25 19 views
1

我確信有這樣做的習慣用法,但我怎樣才能使用dplyr將布爾掩碼或行選擇傳遞給過濾操作。R/dplyr:如何將過濾器函數與流水線%>%運算符一起使用?

例如,在這裏我要選擇出來哪個ID被複制的foo行:

foo$id %>% duplicated %>% filter(foo ??) 

我可以用匿名函數做到這一點,但必須有比一個更好的辦法:

foo$id %>% duplicated %>% function(x) foo[x,] 
+1

你能使用'富%>%的過濾器(複製(ID))'呢? –

+3

您能否提供foo使其成爲最小工作代碼,否則這是提出問題的理由? –

回答

3

問題是你試圖發送向量管道時,dplyr真的是要用於類似表的對象,所以你應該發送整個data.frame(假設這是什麼foo是例如

library(dplyr) 
foo <- data.frame(id=sample(1:5, 25, replace=T), val=runif(25)) 
foo %>% filter(!duplicated(id)) 

如果你真的只想要的ID,然後加入

foo %>% filter(!duplicated(id)) %>% select(id) 
相關問題