4

質問として、後者の方法の方が速度が速いことがわかりますが、なぜ最初の方法を使用するのですか? ありがとう。

4

3 に答える 3

2

R の新機能 (バージョン 2.12.0 以降) はdroplevels()、同じことを行う関数です。次のように実装されます。

> base:::droplevels.factor
function (x, ...) 
factor(x)
<environment: namespace:base>

したがって、私はその機能を好みから使用します。"factor"クラスおよびのオブジェクトのメソッドを備えた R の汎用関数です"data.frame"。後者は、データ フレームにレベルの低下が必要な要素が多数ある場合に役立ちます。

于 2011-01-17T07:47:11.827 に答える
2

two コマンドはまったく同じですが、正確ではありません。特に、因子の元の順序を保持している場合はそうです。使用できない場合もあります: as.factor(as.character(f)) . 見る:

par(mfrow=c(2,3))
f <- factor(c("D", "B", "C", "K", "A"), levels=c("K", "B", "C", "D"))[2:4]
plot(f, main="Original factor")
f.fc <- as.factor(as.character(f))
plot(f.fc, main="as.factor(as.character(f))")
f.d <- drop.levels(f)
plot(f.d, main="drop.levels(f)")
f.d <- drop.levels(f, reorder=FALSE)
plot(f.d, main="drop.levels(f, reorder=FALSE))")
f.f <- factor(f)
plot(f.f, main="factor(f)")

代替テキスト

as.factor(as.character(f))drop.levels(f)同じことを行い、因子の元の順序を保持せず、両方ともテキストを ABC 順序で再平準化します。reorder=FALSEでオプションを使用できる順序を保持したいdrop.levels()

これは のデフォルトの動作ですfactor()

于 2011-01-17T10:42:20.100 に答える
2

未使用のレベルを削除しようとしている場合、必要なことは次のとおりです。

x <- factor(x) 
于 2011-01-17T07:01:17.203 に答える