17

2.5 GBのデータセットがありますが、これは4GBのメモリとしてはかなり大きいです。文字変数を因子に変換することで、スペースと処理時間を節約できるのではないかと思います。

内部的には、因子はレベルのルックアップテーブルとともに数値で格納されると思います。しかし、それが実際にどのように機能するかはわかりません。

4

2 に答える 2

18

文字はハッシュテーブルに格納されるため、factorに変換してもスペースは節約されません。セクション1.10RInternalsのCHARSXPキャッシュ参照してください。

コードを因数分解に変換する必要がある場合(回帰、分類などを実行する場合)、因数分解に変換すると処理時間が改善される場合がありますが、文字列操作を行う場合は、因数分解を変換する必要があるため、処理時間は改善されません。キャラクターに戻る。だからそれは本当にあなたがしていることに依存します。

于 2012-11-26T18:18:26.657 に答える
7

カテゴリデータを文字ベクトルとしてではなく要素として保存すると、ディスクにデータを書き込むときにスペースを節約できます。

## Create 2 two-million length vectors, one character and one factor
animalsChar <- c(rep("giraffe", 1e6), rep("pygmy chimpanzee", 1e6))
animalsFac  <- factor(animalsChar)

## Save them to two ".Rdata" files
charFile <- "char.Rdata"
facFile <-  "fac.Rdata"
save(animalsChar, file = "char.Rdata")
save(animalsFac, file = "fac.Rdata")

## Compare the sizes of the two files
file.info("char.Rdata", "fac.Rdata")["size"]
#             size
# char.Rdata 87390
# fac.Rdata   7921


## Clean up
unlink(c("char.Rdata", "fac.Rdata"))
于 2012-11-26T18:35:51.913 に答える