2017-09-25 17 views
2

filterdplyrは列の位置で可能ですか?第1列目のdplyrフィルター

私はdplyr

iris[iris[,1]>6,]

せずにそれを行う方法を知っているしかし、私はdplyrでそれをどのように行うことができますか?

ありがとうございます!

+2

私は本当におろか、それは良い方法である場合に最良の方法を知りませんが、 'アイリス%>%フィルタ((選択してください。、1)> 6)'多分? – thelatemail

+1

または 'iris%>%filter(。[[1]]> 6)' – eipi10

答えて

2

魔法、ちょうど上記のとおり、項目列番号ではなく、変数(列)の名前を使用します。

以外にも
iris %>% 
    filter(.[[1]] > 6) 
+4

おそらく 'filter(。[、1]> 6)でなければなりません。ここでは重要ではありませんが、フィルタの前に他のパイプ関数を使って最初のデータフレームを変更した場合、 'filter(iris [、1]> 6)'は元のデータフレームのパイプの外側に届きます。パイプされたデータフレームを使用するのではなく、 – eipi10

+2

これらの2つが比較できない例として、 'iris%>%mutate(Sepal.Length = 0)%>%filter(iris [、1]> 6)' vs 'iris%>%mutate(Sepal.Length = 0)%>%filter(。[、1]> 6) ' – thelatemail

5

として優れているコメントeipi10 @として

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

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

@ thelatemailの提案では、filter_atを使用して、varsパラメータに列番号を渡すことができます。


all(iris %>% filter_at(1, all_vars(. > 6)) == iris[iris[,1] > 6, ]) 
# [1] TRUE 
関連する問題