У меня возникли проблемы с выяснением того, как вернуть RcppArmadillo colvec в качестве стандартного R-вектора. Я надеялся, что смогу набрать as<NumericVector>(wrap()
, но я все еще получаю объекты с матрицами R. Вот немного кода, чтобы показать, что я попытался (частично вдохновлен this previous question):Возврат RcppArmadillo vector as R vector
// [[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))
);
}
и если я смотрю на выходе я получаю следующее, которые являются все объекты R матрицы. Могу ли я передать его векторам R?
> 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
Это тоже хорошо - приятно. –
Ответы на вопросы и ответы Нирселла и Дирка помогли мне с моим вопросом. Поскольку они предлагают несколько разные (но действительные) решения, я перевернул монету, чтобы получить ответ. Спасибо, оба! – ekstroem