次の実験を検討してください。
Rgames> oof<-c(6,7,8,0,10)
Rgames> badoof<-vector()
Rgames> oof[badoof]
numeric(0)
Rgames> oof[-badoof]
numeric(0)
Rgames> oof[-0]
numeric(0)
Rgames> oof[-10]
[1] 6 7 8 0 10
Rgames> oof[-c(10,0)]
[1] 6 7 8 0 10
Rgames> oof[!(1:length(oof)%in% c(badoof) )]
[1] 6 7 8 0 10
「ゼロと混合できるのは負の整数のみ」がサブセット化の制限であることは知っています。私には明らかではない部分は、両方が何も返さない理由oof[badoof]
ですoof[-badoof]
。ここでの背景は、不良データを検索してデータのベクトルから削除する関数を持っていることです。悪いアイテムが見つからなかった (つまりbadoof
、要素がない) ケースを個別に、または if/else を介して処理する必要がないようにしたいと考えていました。上記の最後の例は動作しますが、インデックス「-badof」構造を受け入れないのは%in%
なぜでしょうか。R
編集:Hong Ooiの答えに照らして、私も尋ねるべきです:[]
指定されたインデックスの実際の値を変更するのではなく、内部で負符号を使用することは実際には「NOT」操作ではないでしょうか?