Dörk hat geschrieben: ↑Mi Sep 02, 2020 9:14 pmIch kapiere langsam, dass R nicht gleich R ist.
R ist eine alte Dame. Es ist eine Implementierung der Sprache S, die in den 70er Jahren des letztes Jahrhunderts entwickelt wurde und der Zuweisungsoperator `<-` soll angeblich so aussehen, weil es das damals als Zeichen auf den Tastaturen gab. Und wer 40 Jahre lang auf Rückwärtskompatibilität geachtet hat, zugleich sich aber auch 40 Jahre so weiter entwickelt hat, dass er heute ganz vorne mitschwimmt, der schleppt auch Altlasten mit sich herum. Wäre merkwürdig, wenn da alles immer homogen wäre.
Ich muss mich eindeutig mit dem data.table Package beschäftigen!
Wenn Du umfangreiche Daten schnell verarbeiten willst ist das eindeutig eine gute Idee.
Mein PC sollte mit SSD, 16 Kernen und 90gb Ram eigentlich schneller sein
Das sind ja radiologische Ausmaße! Leider bedeuten 16 Kerne nie, dass ein Rechner 16 Mal so schnell läuft. Erstens ist nicht jedes Problem gleichermaßen dazu geeignet, parallelisiert zu werden, andererseits fällt beim Parallelisieren immer Organisationsaufwand an, der zusätzlich zu leisten ist.
Einerseits stammt R aus einer Zeit, als die meisten keine Multicoreprozessoren hatten und andererseits ist es nicht trivial für R zu erkennen, wann multicore Vor- und wann es Nachteile bringt. Du musst also i. d. R. selbst aktiv werden, wenn etwas zu parallelisieren ist. Eine recht anfängerfreundliche Variante stellt die foreach-Funktion im
foreach-package dar. Du kannst Deine Daten beispielsweise in data.table in 10 Untergruppen aufteilen und dann die Suche in jedem der 10 Datenpakete mit foreach auf 10 Cores verteilen.
Es gibt viele weitere Möglichkeiten zum Parallelisieren. Einige besonders relevante Packages dafür listet der einschlägige
CRAN Task View HighPErformanceComputing auf.
HTH,
Bernhard