如何从 RcppArmadillo 函数 return 不同类型的对象

How to return objects of different types from RcppArmadillo function

l 想 return 来自函数 RcppArmadillo 的不同类型的对象。

例如,下面是我尝试使用 std::tuple 对矢量和函数进行 return 的代码。

#include <RcppArmadillo.h>
#include <tuple>
// [[Rcpp::depends(RcppArmadillo)]]

using namespace arma;

// [[Rcpp::export]]
std::tuple<arma::vec, arma::mat> test_tuple(arma::vec avec, arma::mat amat) {

  arma::vec bvec = avec;
  arma::mat bmat = amat;
  return std::make_tuple(bvec, bmat);
}

但是,我收到以下错误:

static assertion failed: cannot convert type to SEXP

我也尝试按照此处的建议使用 List::create 失败:

如何正确 return 不同类型的对象并修复上述错误?

我不确定您所说的“尝试不成功”使用 List::create 是什么意思。以下对您有用吗?

#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]

// [[Rcpp::export]]
Rcpp::List test_tuple(arma::vec avec, arma::mat amat) {

  arma::vec bvec = avec;
  arma::mat bmat = amat;
  return Rcpp::List::create(
    Rcpp::Named("avec") = avec,
    Rcpp::Named("amat") = amat
  );
}