Ich benutze R.3.0.1 zusammen mit RStudio 0.97.551 auf einem 64bit Windows7 PC und ich habe damit begonnen, eine Funktion in C / C ++ mit Rcpp auszulagern. Die Funktion kompiliert, aber die Auswertung innerhalb einer R-Funktion erzeugt einen Laufzeitfehler. Ich kann nicht herausfinden, warum und wie ich das beheben kann.
Unten ist meine cpp-Datei ... sagen wir mal, sie heißt "vector.cpp"
%Vor%was ich in R (oder RStudio) mit dem Befehl
kompiliere %Vor%Es kompiliert - so weit so gut. Wenn ich jedoch die Funktion l5 in anderen R-Funktionen verwende, führt dies oft zum Absturz von R (sowohl in RStudio als auch in der R-GUI). In der Tat ist auch die Bewertung selbst nicht stabiler. Um dies zu reproduzieren, z.B. Versuchen Sie, 16 mehrmals auszuwerten
%Vor%und führen Sie
aus %Vor%Insbesondere erzeugt es den folgenden Laufzeitfehler
%Vor%Was ist also falsch an meiner Funktion?
Wie Dirk unten vorgeschlagen hat, gibt es einen elementaren Fehler in der for-Schleife, wo ich von 0 bis n läuft und somit n + 1 Elemente hat, aber ich initialisierte nur Vektoren der Länge n. Um diesen Fehler zu vermeiden, habe ich die Funktion nun mit Iteratoren implementiert.
%Vor%Vielen Dank nochmal!
Sie machen einen elementaren C / C ++ Fehler:
%Vor% wird n+1
mal aufgerufen, aber Sie haben n
Leerzeichen zugewiesen.