0
映射工作正常:rcppEigen不支持RowVectorXd?
Map<Eigen::VectorXd> x(as<Map<Eigen::VectorXd> >(y));
但与:
Map<Eigen::RowVectorXd> x(as<Map<Eigen::RowVectorXd> >(y));
是RowVectorXd不RcppEigen支持?
映射工作正常:rcppEigen不支持RowVectorXd?
Map<Eigen::VectorXd> x(as<Map<Eigen::VectorXd> >(y));
但与:
Map<Eigen::RowVectorXd> x(as<Map<Eigen::RowVectorXd> >(y));
是RowVectorXd不RcppEigen支持?
编辑:
的代码,以使这种形式的包装已合并为RcppEigen
dev的版本。随时通过抓住一个副本:
devtools::install_github("RcppCore/RcppEigen")
原文:
每RcppEigen的unit tests和exporters,它looks好像只有VectorXd/VectorXi目前有出口类设置。
这需要添加到出口商类。这是一个PR containing the fix。
template<typename T>
class Exporter<Eigen::Map<Eigen::Matrix<T, 1, Eigen::Dynamic> > > {
typedef typename Eigen::Map<Eigen::Matrix<T, 1, Eigen::Dynamic> > OUT ;
const static int RTYPE = ::Rcpp::traits::r_sexptype_traits<T>::rtype ;
Rcpp::Vector<RTYPE> vec ;
public:
Exporter(SEXP x) : vec(x) {
if (TYPEOF(x) != RTYPE)
throw std::invalid_argument("Wrong R type for mapped vector");
}
OUT get() {return OUT(vec.begin(), vec.size());}
} ;
由于RowVectorXd
被给定为X小数的行向量:Matrix<double, 1, X>
。见Matrix docs