data.frame フィルタリングには興味深いオプションがありますdrop = TRUE
。次の抜粋を参照してくださいhelp('[.data.frame')
。
使用法
クラス「data.frame」の S3 メソッド
x[i, j, drop = ]
しかし、data.frame で試してみると、うまくいきません。
> df = data.frame(a = c("europe", "asia", "oceania"), b = c(1, 2, 3))
>
> df[1:2,, drop = TRUE]$a
[1] europe asia
Levels: asia europe oceania <--- oceania shouldn't be here!!
>
私は次のような他の方法があることを知っています
df2 <- droplevels(df[1:2,])
しかし、ドキュメントではこれを行うためのはるかにエレガントな方法が約束されているのに、なぜそれが機能しないのでしょうか? バグですか?これがどのように機能するのか理解できないので...
編集:ここでわかるdrop = TRUE
ように、ベクトルの因子レベルを削除することで混乱しました。因子レベルを下げて下げないのはあまり直感的ではありません!![i, drop = TRUE]
[i, j, drop = TRUE]