Zusammenführen wirklich nicht, dass große data.tables sofort dazu führt, dass R getötet wird [geschlossen]

8

Ich habe 32 GB RAM auf diesem Rechner, aber ich kann R schneller töten als jeder andere;)

Beispiel

Das Ziel ist hier, eine rbind() von zwei data.tables mit Funktionen zu erreichen, die die Effizienz von data.table nutzen.

Eingabe:

%Vor%

Ausgabe:

%Vor%

Eingabe:

%Vor%

Ausgabe:

%Vor%

Eingabe:

%Vor%

Ausgabe:

Ha! Nee. RStudio startet die Sitzung neu.

Frage

Was ist hier los? Das explizite Festlegen der Faktorstufen in join.table hatte keine Auswirkungen. rbind() anstelle von merge() hat nicht geholfen - genau dasselbe Verhalten. Ich habe viel kompliziertere und umfangreichere Dinge mit diesen Daten ohne Probleme gemacht.

Versionsinfo

%Vor%

Data.table ist Version 1.8.11.

    
bright-star 06.02.2014, 00:11
quelle

1 Antwort

11

Update: Dies wurde in Commit 1123 von v1.8.11 behoben. Von NEWS :

  

o rbindlist mit mindestens einer Faktorspalte zusammen mit dem Vorhandensein von mindestens einem leeren data.table resultierte in segfault (oder in linux / mac hat einen Fehler in Bezug auf Hashtabellen gemeldet). Dies ist jetzt behoben, # 5355. Danke an Trevor Alexander für die Meldung von SO (und mnel für die Einreichung des Fehlerberichts): das Zusammenführen von wirklich nicht so großen data.tables führt sofort dazu, dass R getötet wird

Dies kann reproduziert werden mit einer einzelnen Zeile data.table mit einer factor -Spalte und einer Null-Zeile data.table mit einer Faktorspalte.

%Vor%

Unter Verwendung von debugonce(data.table:::merge.data.table) kann dies auf die Zeile rbind(dt,yy) zurückgeführt werden, die dem Äquivalent von

entspricht %Vor%

Wenn Sie es ausführen, wird derselbe Fehler auftreten.

Dies wurde den Paketautoren als Problem gemeldet # 5355

    
mnel 06.02.2014, 01:20
quelle

Tags und Links