R の [] 演算子の落とし穴

R でベクトルやリストなどから要素を選択する [] 演算子。諸言語のように添字で要素を選択することもできるが、真偽値ベクトルを渡して選択することも可能で、

 df[df$CATEGORY == 1]

のようにして日々お世話になっている。

問題は、真偽値ベクトルに NA が含まれていた場合、それも選択してしまうこと。それが嫌な場合は、which を介して添字のベクトルで選択するようにしたほうがよい。つまり、

 df[which(df$CATEGORY == 1)]

とすればよい。