Ich habe Probleme herauszufinden, wie man ein RcppArmadillo colvec als Standard-R-Vektor zurückgibt. Ich hatte gehofft, ich könnte durch as<NumericVector>(wrap()
tippen, aber ich habe immer noch mit Objekten dort sind R-Matrizen. Hier ist ein Stück Code, um zu zeigen, was ich versucht habe (zum Teil durch this previous question inspiriert):Return RcppArmadillo Vektor als R Vektor
// [[Rcpp::export]]
List testthis(NumericVector x) {
arma::colvec y = x;
arma::vec z = x;
return List::create(Rcpp::Named("y1")=y,
Rcpp::Named("y2")=wrap(y),
Rcpp::Named("y3")=as<NumericVector>(wrap(y)),
Rcpp::Named("z1")=z,
Rcpp::Named("z2")=arma::trans(z),
Rcpp::Named("z3")=as<NumericVector>(wrap(z))
);
}
und wenn ich am Ausgang aussehen erhalte ich die folgende, die alle R-Matrix-Objekte sind. Kann ich es in R-Vektoren umwandeln?
> testthis(c(1:3))
$y1
[,1]
[1,] 1
[2,] 2
[3,] 3
$y2
[,1]
[1,] 1
[2,] 2
[3,] 3
$y3
[,1]
[1,] 1
[2,] 2
[3,] 3
$z1
[,1]
[1,] 1
[2,] 2
[3,] 3
$z2
[,1] [,2] [,3]
[1,] 1 2 3
$z3
[,1]
[1,] 1
[2,] 2
[3,] 3
Das ist auch gut - schön. –
Sowohl @russels als auch Dirks Antworten haben mir bei meiner Frage geholfen. Da sie etwas andere (aber gültige) Lösungen bieten, habe ich eine Münze geworfen, wer die Antwort bekommen sollte. Danke beiden! – ekstroem