2

次の実験を検討してください。

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」操作ではないでしょうか?

4

1 に答える 1

4

次の理由で機能しません。

> x <- numeric(0)
> x
numeric(0)
> -x
numeric(0)
> identical(x, -x)
[1] TRUE

IOW、要素のないベクトルを否定すると、ベクトルは変更されないため、ベクトルを使用したインデックス操作も変更されません。

于 2013-07-05T15:58:15.903 に答える