如何从 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
);
}
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
);
}