Die Rcpp-Funktion stürzt ab

8

Mein Problem:

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.

Details

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?

Lösung

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!

    
pfifas 19.02.2014, 19:38
quelle

1 Antwort

8

Sie machen einen elementaren C / C ++ Fehler:

%Vor%

wird n+1 mal aufgerufen, aber Sie haben n Leerzeichen zugewiesen.

    
Dirk Eddelbuettel 19.02.2014, 20:00
quelle

Tags und Links