Najlepsze praktyki przechowywania i używania ramek danych zbyt dużych dla pamięci?

Pracuję z dużą ramką danych i przekroczyłem limity pamięci RAM. W tym momencie prawdopodobnie muszę pracować z seryjną wersją na dysku. Istnieje kilka pakietów do obsługi operacji poza pamięcią, ale nie jestem pewien, który z nich będzie odpowiadał moim potrzebom. Wolałbym zachować wszystko w ramkach danych, więc pakiet ff wygląda zachęcająco, ale nadal są problemy ze zgodnością, których nie mogę obejść.

Po co sięgnąć po pierwsze narzędzie, gdy zdasz sobie sprawę że Twoje dane osiągnęły skalę poza pamięcią?

Author: David Arenburg, 2009-12-09

2 answers

Prawdopodobnie chcesz spojrzeć na te pakiety:

  • ff do przechowywania plików płaskich i bardzo wydajnego pobierania (może wykonywać dane.Ramki; Różne typy danych)
  • Bigmemory (10) do użytku poza pamięcią R, ale nadal w pamięci RAM (lub z plikami) (może wykonywać tylko macierze; ten sam typ danych)
  • biglm do modelu out-of-memory pasującego do modeli lm() i glm() - style.

I zobacz także widok zadania High-Performance Computing .

 26
Author: Dirk Eddelbuettel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-22 18:44:55

Jeśli masz do czynienia z problemami z pamięcią, spróbuj wykonać następujące kroki:

  1. Wyczyść dodatkowy proces, który zużywa pamięć RAM. Upewnij się, że nie otwierasz przeglądarki z wieloma kartami, ponieważ wydają się zużywać dużo pamięci RAM.

  2. Po wykonaniu kroku 1 zrozum strukturę pliku zestawu danych. W tym celu użyj read.csv(nrow=100). W ten sposób dowiesz się, czym są kolumny i struktura kolumn. Jeśli uważasz, że jakaś kolumna nie jest przydatna, Usuń to.

  3. Po zapoznaniu się ze strukturą kolumn (colclasses) możesz zaimportować całą ramkę danych za jednym zamachem..

Oto przykładowy kod:

initial <- read.table("datatable.txt", nrows = 100)
classes <- sapply(initial, class)
tabAll <- read.table("datatable.txt", colClasses = classes)
  1. Użyj fread () do odczytu dużych ramek danych.

  2. Jeśli nadal to nie rozwiąże problemu, podziel zbiór danych na dwie części, podziel liczbę wierszy na dwie równe części, a następnie połącz je po zastosowaniu techniki redukcji wymiarowości.

Mam nadzieję, że to pomoże.
 0
Author: Gaurav Chavan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-05 18:00:48