2

いくつかの因子変数を持つ大きなデータフレーム(100k行x 50列)があります。小さなサブセット(100行など)でプロトタイピングを実行したいと思います。問題は私がタイプするときです:

train <- train[1:100,]

サイズは(を使用して)縮小しdim()ますが、元のデータフレームからのすべての要素を保存しているように見えます(ここlsos()にあるを使用してメモリサイズを測定しています)。

これを回避する方法はありますか?これまでのところ、私が見つけた唯一の方法は、因子変数を文字列に変換してからサブセット化し、次に因子に再度変換することです。これを行うにはもっと良い方法が必要だと思います。

助言がありますか?

4

1 に答える 1

4

関数を使用droplevelsして、新しいdata.frameにないレベルを削除します。詳細については、を参照?droplevelsしてください。

例:

> DF <- data.frame(num=1:15, letter=rep(letters[1:5], each=3),random=rnorm(15))
> levels(DF[, 2]) # all levels
[1] "a" "b" "c" "d" "e"
> 
> DF2 <- DF[1:10, ] # subseting
> levels(DF2[, 2]) # all levels again
[1] "a" "b" "c" "d" "e"
> DF2[, 2] <- droplevels(DF2[, 2])
> levels(DF2[, 2]) # only the levels contained in DF2
[1] "a" "b" "c" "d"
于 2013-02-19T18:46:31.923 に答える