R verbraucht viel zu viel RAM, um wenige Daten zu extrahieren! BITTE UM HILFE

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
dormilona
Beiträge: 8
Registriert: Sa Aug 15, 2020 2:46 pm

R verbraucht viel zu viel RAM, um wenige Daten zu extrahieren! BITTE UM HILFE

Beitrag von dormilona »

Hallo zusammen! Ich habe seit ein paar Tagen Schwierigkeiten bei der Datenextraktion in R Studio und ich habe keine Ahnung, woran es liegt. Für Hilfe bin ich extrem dankbar.
Zum Hintergrund:
Grundlage meiner Analysen ist eine big data Datei ("ukb40821.tab" 25 GB). Ich brauche nicht jede Variable, sodass ich einfach die Variablen, die mich interessieren aussuche und in ein Dataset zusammenfasse. Ich habe das schon mehrfach gemacht und es gab nie Probleme.
Nun wollte ich von dieser Datei ein neues Data set erstellen und habe folgenden Code verwendet (der auch die male vorher reibungslos funktionierte):
> # set Working directory
> setwd("D:/Biobank/Biobank Projekt")
> # Have a look at the first row of the origin data set
> bd <- read.table("D:\\Biobank\\ukb40821.tab", header=TRUE, sep="\t",nrow=1)
> length(bd)
[1] 13553
> # Select variables, Extract data
> cols<-rep("NULL",13553)
> cols[c(1,11,404,674:677,702:705,1463:1466,9036:9075,813:816,817:820,821:824,825:828,829:832,837:840, 114:117,1126:1129,4196:6139,4380:4391,5097:5120,5121:5256,5257:5448,8169:8172,8303:8342,6446:6449,8161:8164,11726:11792,2254:2257,438:449,6457:6460,2518:2521,7512,8141,7516,38:41,9171:9190,9211:9230,9191:9210,9157:9170,9124:9156,9076:9108,9109:9123,9231:9250,9251:9283,9284:9316,9317:9349,9350:9382,9383:9415,9416:9432,841:844,965:968,678:681,682:685)]<-NA
> cd <-read.table("D:\\Biobank\\ukb40821.tab", colClasses = cols,header=TRUE,sep="\t")
R sagt als Fehlermeldung: Kann Vektor der Größe 3,8 MB nicht allozieren.
Das habe ich bisher versucht:
Ich habe meinen RAM gechecked und ihn von 4 GB auf 8 GB erweitert.
Ich habe Kolleg/innen, die auch mit dem Datensatz arbeiten gefragt, ob das normal ist. Niemand von ihnen hatte je so ein Problem. Alle meinten, 4 GB RAM sollte definitv reichen.
Ich habe alle unnötigen workspace von R Studio gelöscht.
Ich habe getestet, was passieren würde, wenn ich nur 3 Variablen versuche zu extrahieren: cols[c(1,11,404)] <- NA
Aber es kam genau die gleiche Fehlermeldung wie oben.
Habe meinen physikalischen Speicher des Laptops geprüft, er war schon recht voll, habe daher wieder viel frei geräumt.
Ich bin vor allem verwirrt, weil ich vorher schon mal Datasets mit z.B. 78 Variablen extrahieren konnte mit genau demselben Code und Datenset. Ich kann mich auch nicht erinnern, irgendwas an den Einstellungen in R Studio geändert zu haben.. Auch als ich versuchte, nur diese 3 Variablen zu extrahieren, hat R Studio über 4 GB gebraucht. Das ist doch nicht normal oder?
Hat jemand eine Idee, was das Problem ist und wie ich es lösen kann? Bin inzwischen wirklich verzweifelt und wäre für Hilfe sehr,sehr dankbar!!

Liebe Grüße,
Johanna
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: R verbraucht viel zu viel RAM, um wenige Daten zu extrahieren! BITTE UM HILFE

Beitrag von Athomas »

Habe meinen physikalischen Speicher des Laptops geprüft, er war schon recht voll, habe daher wieder viel frei geräumt.
Auch schön "gc()" gemacht - am Besten zweimal?

Ergänzung:
Ich habe Kolleg/innen, die auch mit dem Datensatz arbeiten gefragt, ob das normal ist. Niemand von ihnen hatte je so ein Problem. Alle meinten, 4 GB RAM sollte definitv reichen.
Ich bin vor allem verwirrt, weil ich vorher schon mal Datasets mit z.B. 78 Variablen extrahieren konnte mit genau demselben Code und Datenset.
Jetzt sind es 2918 Variablen - da Ganze ist also platzmäßig gar nicht mit Deinen bisherigen erfolgreichen Versuchen vergleichbar!?
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: R verbraucht viel zu viel RAM, um wenige Daten zu extrahieren! BITTE UM HILFE

Beitrag von EDi »

Das es ja tab-getrennt ist: probier mal vroom: https://vroom.r-lib.org/articles/vroom. ... election-1

Ansonste, bitte mal den output von

Code: Alles auswählen

sort( sapply(ls(),function(x){object.size(get(x))}), decreasing = TRUE) 
Vor und nach dem Fehler zeigen.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: R verbraucht viel zu viel RAM, um wenige Daten zu extrahieren! BITTE UM HILFE

Beitrag von bigben »

Mal ganz hemdsärmelig eine Überschlagsrechnung; Der Datensatz hat 25GB verteilt auf 13553 Spalten. Du willst jetzt davon 2918 Spalten lesen, also etwa 21%. Klar sollte R die Daten platzsparender vorhalten als ein Textformat, aber es hat ja auch etwas Overhead zum Untersuchen der Daten, Datentypbestimmung etc. 2918/13553*25 sind 5,38 GB! So selbstverständlich ist es da nicht, dass 4 GB reichen, wenn gleichzeitig auch noch ein Betriebssystem und R laufen.
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: R verbraucht viel zu viel RAM, um wenige Daten zu extrahieren! BITTE UM HILFE

Beitrag von EDi »

Wie viele Zeilen sollen denn eingelesen werden?
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Antworten