Ich mache einen Rcpp-Code für Gibbs Sampling. Innerhalb des Codes möchte ich zuerst ein 3-dimensionales Array mit Zeilennummer = Anzahl der Iterationen (500), Spaltenanzahl = Anzahl der Parameter (4) und Schichtnummer = Anzahl der Ketten (3) erstellen. Ich schrieb es auf diese Weise:macht 3D-Array mit Arma :: Cube in Rcpp zeigt Cube-Fehler
#include <RcppArmadillo.h>
#include <math.h>
// [[Rcpp::depends(RcppArmadillo)]]
using namespace Rcpp;
using namespace std;
using namespace arma;
//Gibbs sampling code starts here
Rcpp::List mcmc(const int iter,const int chains, const NumericVector data){
arma::cube posteriorC = arma::zeros(iter, 5, chains);
\\ rest of the codes
List out(Rcpp::List::create(Rcpp::Named("posteriorC") =posteriorC));
return out;
}
. Während es zwingt, zeigt es keinen Fehler. Aber wenn ich mit dem Code ausführen mag:
res<- mcmc(iter=500,chains=2,data)
es zeigt den Fehler:
Error: Cube::operator(): index out of bounds
. Ich möchte wissen, ob beim 3D-Array ein Fehler vorliegt. Bitte beachten Sie, dass ich Schätzungen von 5 Parametern meines Modells erhalten möchte.
@ coatless, Vielen Dank. Aber es hat nicht für mich funktioniert. :(. Zeigt beim Schreiben oder Kompilieren keinen Fehler an. Kann ich gleichzeitig arma :: cube und Rcpp :: NumericVector verwenden? Oder muss ich immer nur arma verwenden? – gultu
@gultu Ich habe 0 Hinweise dazu was passiert in Ihrer MCMC-Routine, wie Sie es weggelassen haben.Ich kann nicht diagnostizieren, _why_ es funktioniert nicht für Sie, da die Informationen, die ich habe, spärlich und direkt mit der Instanziierung des "arma :: cube" verbunden ist. – coatless
@ coatless , der Hauptcode ist sehr lang und ist kompliziert.Soll ich es hier posten? – gultu