2.5 GBのデータセットがありますが、これは4GBのメモリとしてはかなり大きいです。文字変数を因子に変換することで、スペースと処理時間を節約できるのではないかと思います。
内部的には、因子はレベルのルックアップテーブルとともに数値で格納されると思います。しかし、それが実際にどのように機能するかはわかりません。
文字はハッシュテーブルに格納されるため、factorに変換してもスペースは節約されません。セクション1.10RInternalsのCHARSXPキャッシュを参照してください。
コードを因数分解に変換する必要がある場合(回帰、分類などを実行する場合)、因数分解に変換すると処理時間が改善される場合がありますが、文字列操作を行う場合は、因数分解を変換する必要があるため、処理時間は改善されません。キャラクターに戻る。だからそれは本当にあなたがしていることに依存します。
カテゴリデータを文字ベクトルとしてではなく要素として保存すると、ディスクにデータを書き込むときにスペースを節約できます。
## 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"))