2017-09-25 80 views
2

是否可以通過列的位置在dplyr中的filter第一列的dplyr過濾器

我知道該怎麼做沒有dplyr

iris[iris[,1]>6,]

但我怎麼能做到這一點的dplyr?

謝謝!

+2

我真的不知道這是否是一個好辦法,更別說最好的辦法,但'虹膜%>%的過濾器(選擇(1)> 6)'也許? – thelatemail

+1

或'iris%>%filter(。[[1]]> 6)' – eipi10

回答

2

沒有魔法,只需使用條款列數按照上面,而不是變量(列)名稱:

library("magrittr") 
library("dplyr") 

iris %>% 
    filter(iris[,1] > 6) 

其中作爲@ eipi10評論是更好,因爲

iris %>% 
    filter(.[[1]] > 6) 
+4

可能應該是'filter(。[,1]> 6)'。這裏沒關係,但通常情況下,如果您在過濾器之前用其他管道功能更改了初始數據幀,filter(iris [,1]> 6)'將會到達管道外的原始數據幀,而不是使用管道數據幀。 – eipi10

+2

就像這兩個不可比較的例子一樣:'iris%>%mutate(Sepal.Length = 0)%>%filter(iris [,1]> 6)'vs'iris%>%mutate(Sepal.Length = 0)%>%filter(。[,1]> 6)' – thelatemail

5

除了@thelatemail建議您也可以使用filter_at並將列號傳遞給vars參數:

iris %>% filter_at(1, all_vars(. > 6)) 

all(iris %>% filter_at(1, all_vars(. > 6)) == iris[iris[,1] > 6, ]) 
# [1] TRUE