サブセット化が行われたときに未使用の因子レベルを削除する問題before。[.data.frameをオーバーライドして未使用の因子レベルを削除する
subsetDrop <- function(...){droplevels(subset(...))}
:一般的な解決策は、私たちが
subset
のラッパーを作成するために
droplevels
のような便利な機能を使用することができ、その場合には、プロットのために必要であるしかし場合によっては、要因を命じ可能
options(stringsAsFactors = FALSE)
を宣言することにより、文字ベクトルを使用することを含みます
私はsubsetDrop
がこの問題をほとんど解決することを認識していますが、[
を介したサブセット化がより便利に(そしてタイピングが減ります)いくつかの状況があります。
私の質問は、便宜上、因子枠を自動的に落とすデータフレームのために[
を無効にすることによって、これをRの「デフォルト」の振る舞いにすることができます。たとえば、HmiscパッケージにはdropUnusedLevels
が含まれており、単一の要素をサブセット化するために[.factor
をオーバーライドします(デフォルトの[.factor
には使用されていないレベルを削除するための引数がdrop
と表示されるため、不要です)。私は[
を使用してデータフレームのサブセットを作成することができますが、未使用のファクタレベルを自動的に削除する同様のソリューションを探しています(もちろん、順序付けられたファクタの場合は順序を保持しています)。あなたはこのようにドロップ引数のデフォルト値を上書きすることでその作業を行うことができます
プロットするために順序付けられた要素はほとんど必要ありません。レベルの順序を変更することは、しばしばプロットの難しさの中核です。順序付け係数は、因子レベルの順序を変更することとはまったく異なります。 –