私は、私たちがテーブルに入れて分析したいいくつかの巨大なテキストファイル(それぞれが1ギガバイトに近い)を持つプロジェクトに持ち込まれました。各テキストファイルは1年間のデータで構成され、各データポイントは3つのカテゴリのいずれかに属しています。最終的な結果は各カテゴリの1つのリストで、各年の観測値を列として含みます。複数のファイルを複数のリストに読み込む
今のところ、各ファイルをリストに読み込んだ後、カテゴリに応じてリストを分割し、年ごとに3つの新しいリストを作成してから、rbind
年の異なるカテゴリのすべてのリスト最終的なリスト。以下のような大量のデータでおり、それを周りに移動させながら、これはそれを2回、それはすべてのデータファイルを形成読み込むように私には思える、コピー
Year1 <- read.table(YearOneFilePath)
table(Year1$category)
Year1A <- Year1[Year1$category == "A",]
Year1B <- Year1[Year1$category == "B",]
Year1C <- Year1[Year1$category == "C",]
rm(Year1)
Year2 <- read.table(YeartwoFilePath)
table(Year2$category)
Year2A <- Year2[Year2$category == "A",]
Year2B <- Year2[Year2$category == "B",]
Year2C <- Year2[Year2$category == "C",]
rm(Year2)
Year3 <- read.table(YearThreeFilePath)
table(Year3$category)
Year3A <- Year3[Year3$category == "A",]
Year3B <- Year3[Year3$category == "B",]
Year3C <- Year3[Year3$category == "C",]
rm(Year3)
A <- rbind(Year1A, Year2A, Year3A)
B <- rbind(Year1B, Year2B, Year3B)
C <- rbind(Year1C, Year2C, Year3C)
rm(Year1A)
rm(Year2A)
rm(Year3A)
rm(Year1B)
rm(Year2B)
rm(Year3B)
rm(Year1C)
rm(Year2C)
rm(Year3C)
:私は(匿名)発表されたR
ファイルについては、以下を参照してください。これには長い時間と多くのメモリが必要です。明らかに私はのリストをYearX[YearX$Category == "Y",]
のファンクションに直接入れることができますが、それでも実行中のある時点では2つの完全なコピーがすべてあることを意味します。最終的なファイルを各ファイルの1つのリードスルー上のファイルからリストアップし、すべてのデータをさらにコピーすることなく、最後のファイルをA
、B
およびC
のリストにする方法はありますか?分割のため
を見るには、実際のRはとても大きくオブジェクトはありますか?ドライブ上の1ファイルにつき1Gbですが、特に各フィールドに固有の値がほとんどない場合は、Rにロードされたものはずっと少なくなります。 Rstudioの環境パネルでサイズを確認するか、 'object.size'関数を使用してください。 –
最新の手順で' rbindlist'を使用することを検討してください:[link](https://stackoverflow.com/questions/15673550/理由があります - rbindlist-better-than-rbind) –
と多分[this](https://stackoverflow.com/questions/9573055/r-selecting-subset-without-copying)あなたがコピーを作成しない限り長いです。 –