2012-03-24 1 views
49

可能性の重複:
Standard way to remove multiple elements from a dataframeRないサブセットで

私はあなたのIDに基づいて、他のグループやマッチングのサブセットを検索する場合、あなたが何かを使うだろうとRに知っていますlike

subset(df1, df1$id %in% idNums1) 

私の質問は、IDのベクトルに一致しないアイテムを選択するか反対の操作を行うかです。

私は !を使用してみました

が、エラーメッセージ

subset(df1, df1$id !%in% idNums1) 

を取得し、私は私のバックアップはいつかこのようにやっていると思う:

matches <- subset(df1, df1$id %in% idNums1) 
nonMatches <- df1[(-matches[,1]),] 

が、私はもう少し効率的な何かがあります願っています。

+7

は、ここに私の答えを参照してください。http://stackoverflow.com/questions/7494848/standard-way-to-remove-multiple-elements-from-aを - データフレーム – Chase

+6

またはそれと同等のチェースのバージョン、私の答え[ここ](http://stackoverflow.com/a/9846035/324364)。 – joran

答えて

102

df1$id %in% idNums1は、論理ベクトルを生成します。それを否定するには、全体のベクトルを否定する必要があります。

!(df1$id %in% idNums1) 
+2

if文で余分な '()'を思い出してください。 –

+0

複数のネストがあるときに角括弧が不便であることから、 "not-in"演算子の定義が非常に有用であることがわかりました。ここでそれを行う方法に関するいくつかの提案があります:http://stackoverflow.com/questions/5831794/opposite-of-in – PatrickT

関連する問題