2016-04-04 7 views
5

In R versuche ich mit einer großen Matrix zu arbeiten (39.146.166 Zeilen mal 127 Spalten) und ich habe Speicherprobleme mit einer Anzahl von Operationen darauf. Ich habe festgestellt, dass etwa 35% der Einträge in der Matrix nicht Null sind und der Rest nur Nullen sind. Ist das spärlich genug, dass ich etwas Speicher, der diese Matrix repräsentiert, mit einer der spärlichen Matrix-Klassen von R speichern würde? Was ist eine gute Faustregel, um zu bestimmen, wann eine Matrix sich nur spärlich darstellt?Wie spärlich muss eine Matrix sein, um sich als spärlich darzustellen?

+1

Sie können [diesen Artikel] (http://www.johnmyleswhite.com/notebook/2011/10/31/using-sparse-matrices-in-r/) hilfreich finden. – nrussell

Antwort

2

Ich glaube nicht, dass die spärliche Darstellung so viel kompakter sein wird. Sie benötigen drei Zahlen für jedes numerische Element außer einer impliziten Null. Selbst wenn zwei davon 4-Byte-Ganzzahlen sind, ist der Speicherplatz im Speicher immer noch größer als eine "serielle" Speicherstrategie.

Durch diese Argumentation wird alles über 50% mehr Speicherplatz benötigen, aber ich poste von einem iPhone unter SF Bay, so kann nicht mit "object.size" testen.

+0

Es gibt eine Reihe von dünn besetzten Matrixformaten, und nicht alle davon erfordern 3 Zahlen pro Eintrag ungleich null. Zum Beispiel benötigt dieses Format ungefähr 2 für meinen Fall: http://netlib.org/linalg/html_templates/node92.html –

+0

@RyanThompson: Dieses Format benötigt 3 Vektoren, nicht zwei –

+0

Nur zwei dieser Vektoren haben jeweils einen Eintrag Datenpunkt. Der letzte Vektor hat nur ein Element für jede Spalte, was in meinem Fall vernachlässigbar ist. –

Verwandte Themen