2009-07-22 10 views
29

Es gibt mindestens zwei Sparse-Matrix-Pakete für R. Ich untersuche diese, weil ich mit Datasets arbeite, die zu groß und spärlich sind, um in den Speicher mit einer dichten Darstellung zu passen. Ich möchte grundlegende lineare Algebra-Routinen, plus die Fähigkeit, C-Code leicht zu schreiben, um auf ihnen zu arbeiten. Welche Bibliothek ist am ausgereiftesten und am besten zu verwenden?Das meiste reife spärliche Matrixpaket für R?

Bisher habe ich

  • Matrix gefunden, die viele umgekehrte Abhängigkeiten hat, was bedeutet es das am häufigsten verwendete man ist.
  • SparseM die nicht so viele umgekehrte Deps hat.
  • Verschiedene Graph-Bibliotheken haben wahrscheinlich ihre eigenen (impliziten) Versionen davon; z.B. igraph und network (letzteres ist Teil von statnet). Diese sind zu speziell für meine Bedürfnisse.

Hat jemand Erfahrung damit?

Aus der Suche nach RSeek.org ein wenig scheint die Matrix Paket am häufigsten genannten. Ich denke oft an CRAN Task Views als ziemlich autoritativ, und die Multivariate Task View erwähnt Matrix und SparseM.

+2

Ich denke, es gibt auch 'Spam'. Die Hilfe sagt: 'Differenzen mit SparseM/Matrix sind: (1) wir unterstützen nur (im Wesentlichen) ein dünn besetztes Matrixformat, (2) basierend auf transparenten und einfachen Strukturen, (3) zugeschnitten für MCMC-Berechnungen innerhalb GMRF. (4) S3 und S4 like- "kompatibel" ... und es ist schnell.Reverse hängt ab: CollocInfer, esd4all, Felder, gitterDichte, LatticeKrig, pencopula, rworldmap, splm –

+0

Abstimmung zum Schließen als Werkzeug rec. –

Antwort

7

Nach meiner Erfahrung ist Matrix das am besten unterstützte und ausgereifteste Paket, das Sie erwähnen. Seine C-Architektur sollte auch ziemlich gut belichtet und relativ einfach zu handhaben sein.

1

log (x) auf einer Sparse Matrix ist eine schlechte Idee, da log (0) nicht definiert ist und die meisten Elemente einer dünn besetzten Matrix gleich Null sind.

Wenn Sie nur das Protokoll der Nicht-Null-Elemente erhalten möchten, versuchen Sie, in eine Triplet-Sparse-Darstellung zu konvertieren und ein Protokoll dieser Werte zu erstellen.

+1

oops. ich meinte eigentlich log (1 + x). Ich denke, das macht keinen Sinn. Ja, ich mache es mit der Triplet-Darstellung, die viel mehr Sinn macht. –

Verwandte Themen