Ich werde versuchen, diese Frage so gut wie möglich zu beantworten.
... aber die Frage, die Sie NICHT stellen, ist vielleicht relevanter: Kann der R-Algorithmus in R schneller gemacht werden? Die Antwort hier ist normalerweise "Ja". Kann es "schnell genug" sein? Nun, das ist unmöglich zu beantworten, ohne es zu versuchen (und den aktuellen R-Code zu sehen).
F: Wird mein R-Algorithmus in C schneller sein?
A: Ja! Wenn Sie den "besten" C-Code für den Algorithmus schreiben, wird er wahrscheinlich schneller sein. Es wird höchstwahrscheinlich auch viel mehr Arbeit sein, dies zu tun.
F: Kann die Sortierung von großen Vektoren in C schneller erfolgen?
A: Ja. Mit Multi-Threading können Sie die Geschwindigkeit erheblich verbessern. ... Aber beginnen Sie mit dem Aufruf sort(x, method='quick')
in R und sehen, ob das Dinge verbessert! Die Standardmethode ist für Zufallsdaten nicht sehr schnell.
x <- runif(1e7)
system.time(sort(x)) # 2.50 secs
system.time(sort(x, method='quick')) # 1.37 secs
#system.time(tommysort(x)) # 0.51 secs (4 threads)
Frage: Welche Bibliotheken simulieren grundlegende R-Funktionen?
A: LAPACK/BLAS behandelt Matrix Mathe in R. Wenn das alles ist, können Sie Bibliotheken finden, die viel schneller als die Vanille in R sind (Sie können einige von ihnen auch in R verwenden, um die Leistung zu verbessern!) .
More info on BLAS
Eine andere Möglichkeit ist es, eine .Call von R bis C zu machen und von dort aus haben Sie Zugriff auf alle Funktionen des R! Das Paket inline
und das Paket Rcpp
können Ihnen dabei helfen.
Eine dritte Möglichkeit besteht darin, R in Ihre Anwendung einzubetten. Rinside
kann helfen, das zu erleichtern.
F: Wie lese ich CSV-Daten in C?
A: Sehen Sie sich die Funktionen fopen
und fscanf
an. ... und verwenden Sie sie, um eine Datenimportfunktion zu schreiben.
Welche Art von Beschleunigung möchten Sie erreichen? Warum denken Sie, dass R für diese Operationen deutlich langsamer als C ist? Hast du http://stackoverflow.com/questions/1330944/speed-of-r-programming-language studiert? –
insbesondere sind 'rowSums' und' colSums' bereits ziemlich schnell - Sie werden wahrscheinlich dort nicht viel Leistung herausholen können (und Sie sollten die ziemlich reiche Sparse-Matrix-Unterstützung in der 'Matrix' berücksichtigen) Paket, wenn Ihre Matrizen spärlich sind ...). Kannst du ein bisschen genauer über "die Fähigkeit sagen, die Maschinen anderer Benutzer laufen zu lassen"? –
Das wird eine Menge Arbeit sein, insb. da Sie von vorne anfangen mit C-Programmierung. Sie könnten [installieren R] (http://cran.r-project.org/bin/windows/rw-FAQ.html) auf den Computern der Benutzer in weniger Zeit als es dauern würde, um den R-Code von Hand zu konvertieren. – hardmath